/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/nested_pairs_to_triple.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/conv2d/selector_list.h"
#include "test/conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Selectors = sycldnn::types::SelectorList;
using Backends = sycldnn::types::AllBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<Selectors, DataTypeList>::type;
using BackendTypePairs =
    sycldnn::types::CartesianProduct<SNNTypePairs, Backends>::type;
using TestTriples = sycldnn::types::NestedPairsToTriple<BackendTypePairs>::type;

using GTestTypeTriples = sycldnn::types::ToGTestTypes<TestTriples>::type;

template <typename Pair>
using InputBackpropWindow5Stride1 = WindowStrideTest<Pair, 5, 1>;
TYPED_TEST_SUITE(InputBackpropWindow5Stride1, GTestTypeTriples);
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      318.,  510.,  750.,  870.,  816.,  705.,  796.,  1220., 1730.,
      1940., 1756., 1474., 1610., 2400., 3325., 3650., 3230., 2660.,
      2690., 3900., 5275., 5600., 4850., 3920., 3544., 5020., 6650.,
      6960., 5908., 4690., 3792., 5310., 6960., 7230., 6072., 4773.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   7.,   10.,  13.,  10.,  9.,  29.,  39.,  49.,  59.,  40.,
      29., 79.,  89.,  99.,  109., 70.,  49., 129., 139., 149., 159., 100.,
      69., 179., 189., 199., 209., 130., 63., 150., 157., 164., 171., 100.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2283.,  3708.,  5505.,  6435.,  6084.,  5289.,  5888.,  9088.,  12960.,
      14600., 13280., 11192., 12115., 18140., 25225., 27775., 24660., 20365.,
      20575., 29900., 40525., 43075., 37380., 30265., 27464., 38944., 51640.,
      54080., 45952., 36512., 29571., 41436., 54345., 56475., 47460., 37329.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    22.,   42.,  62.,   82.,   67.,   52.,   184.,  256.,
      328.,  400.,  280., 192.,  544.,  616.,  688.,  760.,  500.,
      332.,  904.,  976., 1048., 1120., 720.,  472.,  1264., 1336.,
      1408., 1480., 940., 457.,  1102., 1154., 1206., 1258., 743.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17238.,  28200.,  42090.,  49410.,  46920.,  40926.,  45208.,  70048.,
      100200., 113160., 103200., 87160.,  93890.,  140920., 196350., 216550.,
      192600., 159290., 160850., 234040., 317550., 337750., 293400., 237770.,
      216184., 306720., 406920., 426280., 362400., 288088., 233526., 327336.,
      429450., 446370., 375240., 295230.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   284.,  428.,  572.,  486.,  340.,  1288., 1832.,
      2376.,  2920.,  2084., 1380., 4008., 4552., 5096., 5640., 3764.,
      2420.,  6728.,  7272., 7816., 8360., 5444., 3460., 9448., 9992.,
      10536., 11080., 7124., 3470., 8428., 8828., 9228., 9628., 5718.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      564.,   636.,   918.,   1020.,  1365.,  1500.,  1590.,  1740.,  1506.,
      1632.,  1311.,  1410.,  1460.,  1592.,  2256.,  2440.,  3220.,  3460.,
      3620.,  3880.,  3296.,  3512.,  2780.,  2948.,  3010.,  3220.,  4510.,
      4800.,  6275.,  6650.,  6900.,  7300.,  6130.,  6460.,  5065.,  5320.,
      5080.,  5380.,  7390.,  7800.,  10025., 10550., 10650., 11200., 9250.,
      9700.,  7495.,  7840.,  6812.,  7088.,  9664.,  10040., 12820., 13300.,
      13420., 13920., 11408., 11816., 9068.,  9380.,  7350.,  7584.,  10302.,
      10620., 13515., 13920., 14040., 14460., 11802., 12144., 9285.,  9546.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   8.,   11.,  14.,  17.,  20.,  23.,  26.,  18.,  20.,
      14.,  18.,  48.,  58.,  68.,  78.,  88.,  98.,  108., 118., 74.,  80.,
      54.,  58.,  148., 158., 168., 178., 188., 198., 208., 218., 134., 140.,
      94.,  98.,  248., 258., 268., 278., 288., 298., 308., 318., 194., 200.,
      134., 138., 348., 358., 368., 378., 388., 398., 408., 418., 254., 260.,
      123., 126., 293., 300., 307., 314., 321., 328., 335., 342., 196., 200.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4143.,   4701.,   6816.,   7608.,   10215.,  11265.,  11985.,  13155.,
      11424.,  12408.,  9993.,   10767.,  10996.,  12028.,  17088.,  18528.,
      24500.,  26380.,  27660.,  29700.,  25280.,  26976.,  21388.,  22708.,
      22985.,  24635.,  34560.,  36840.,  48225.,  51175.,  53175.,  56325.,
      47360.,  49960.,  39215.,  41225.,  39365.,  41735.,  57360.,  60600.,
      77925.,  82075.,  82875.,  87225.,  72080.,  75640.,  58475.,  61205.,
      53284.,  55468.,  75648.,  78624.,  100420., 104220., 105180., 109140.,
      89472.,  92704.,  71164.,  73636.,  57747.,  59601.,  80976.,  83496.,
      106275., 109485., 110445., 113775., 92880.,  95592.,  73101.,  75171.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   48.,   68.,   88.,   108.,  128.,  148.,
      168.,  123.,  137.,  82.,   110.,  312.,  384.,  456.,  528.,
      600.,  672.,  744.,  816.,  526.,  570.,  362.,  390.,  1032.,
      1104., 1176., 1248., 1320., 1392., 1464., 1536., 966.,  1010.,
      642.,  670.,  1752., 1824., 1896., 1968., 2040., 2112., 2184.,
      2256., 1406., 1450., 922.,  950.,  2472., 2544., 2616., 2688.,
      2760., 2832., 2904., 2976., 1846., 1890., 897.,  919.,  2164.,
      2216., 2268., 2320., 2372., 2424., 2476., 2528., 1463., 1493.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31686.,  36078.,  52440.,  58680.,  78930.,  87210.,  92970.,  102210.,
      88920.,  96696.,  77982.,  84102.,  85256.,  93416.,  132896., 144288.,
      191000., 205880., 216120., 232280., 197920., 211360., 167720., 178184.,
      179530., 192610., 270440., 288520., 377950., 401350., 417350., 442350.,
      372200., 392840., 308530., 324490., 309850., 328690., 451880., 477640.,
      614350., 647350., 653750., 688350., 569000., 597320., 461890., 483610.,
      421448., 438824., 598560., 622240., 794840., 825080., 832760., 864280.,
      708640., 734368., 563816., 583496., 457782., 472542., 642072., 662136.,
      842850., 868410., 876090., 902610., 736920., 758520., 580110., 596598.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   324.,   468.,   612.,   756.,   900.,   1044.,
      1188.,  902.,   1006.,  540.,   748.,   2216.,  2760.,  3304.,  3848.,
      4392.,  4936.,  5480.,  6024.,  3948.,  4284.,  2620.,  2828.,  7656.,
      8200.,  8744.,  9288.,  9832.,  10376., 10920., 11464., 7308.,  7644.,
      4700.,  4908.,  13096., 13640., 14184., 14728., 15272., 15816., 16360.,
      16904., 10668., 11004., 6780.,  6988.,  18536., 19080., 19624., 20168.,
      20712., 21256., 21800., 22344., 14028., 14364., 6830.,  6998.,  16596.,
      16996., 17396., 17796., 18196., 18596., 18996., 19396., 11286., 11518.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1056.,  1128.,  1200.,  1272.,  1734.,  1836.,  1938.,  2040.,  2595.,
      2730.,  2865.,  3000.,  3030.,  3180.,  3330.,  3480.,  2886.,  3012.,
      3138.,  3264.,  2523.,  2622.,  2721.,  2820.,  2788.,  2920.,  3052.,
      3184.,  4328.,  4512.,  4696.,  4880.,  6200.,  6440.,  6680.,  6920.,
      6980.,  7240.,  7500.,  7760.,  6376.,  6592.,  6808.,  7024.,  5392.,
      5560.,  5728.,  5896.,  5810.,  6020.,  6230.,  6440.,  8730.,  9020.,
      9310.,  9600.,  12175., 12550., 12925., 13300., 13400., 13800., 14200.,
      14600., 11930., 12260., 12590., 12920., 9875.,  10130., 10385., 10640.,
      9860.,  10160., 10460., 10760., 14370., 14780., 15190., 15600., 19525.,
      20050., 20575., 21100., 20750., 21300., 21850., 22400., 18050., 18500.,
      18950., 19400., 14645., 14990., 15335., 15680., 13348., 13624., 13900.,
      14176., 18952., 19328., 19704., 20080., 25160., 25640., 26120., 26600.,
      26340., 26840., 27340., 27840., 22408., 22816., 23224., 23632., 17824.,
      18136., 18448., 18760., 14466., 14700., 14934., 15168., 20286., 20604.,
      20922., 21240., 26625., 27030., 27435., 27840., 27660., 28080., 28500.,
      28920., 23262., 23604., 23946., 24288., 18309., 18570., 18831., 19092.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  13.,  16.,  19.,  22.,  25.,  28.,
      31.,  34.,  37.,  40.,  43.,  46.,  49.,  52.,  34.,  36.,  38.,  40.,
      24.,  28.,  32.,  36.,  86.,  96.,  106., 116., 126., 136., 146., 156.,
      166., 176., 186., 196., 206., 216., 226., 236., 142., 148., 154., 160.,
      104., 108., 112., 116., 286., 296., 306., 316., 326., 336., 346., 356.,
      366., 376., 386., 396., 406., 416., 426., 436., 262., 268., 274., 280.,
      184., 188., 192., 196., 486., 496., 506., 516., 526., 536., 546., 556.,
      566., 576., 586., 596., 606., 616., 626., 636., 382., 388., 394., 400.,
      264., 268., 272., 276., 686., 696., 706., 716., 726., 736., 746., 756.,
      766., 776., 786., 796., 806., 816., 826., 836., 502., 508., 514., 520.,
      243., 246., 249., 252., 579., 586., 593., 600., 607., 614., 621., 628.,
      635., 642., 649., 656., 663., 670., 677., 684., 388., 392., 396., 400.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7863.,   8421.,   8979.,   9537.,   13032.,  13824.,  14616.,  15408.,
      19635.,  20685.,  21735.,  22785.,  23085.,  24255.,  25425.,  26595.,
      22104.,  23088.,  24072.,  25056.,  19401.,  20175.,  20949.,  21723.,
      21212.,  22244.,  23276.,  24308.,  33088.,  34528.,  35968.,  37408.,
      47580.,  49460.,  51340.,  53220.,  53780.,  55820.,  57860.,  59900.,
      49280.,  50976.,  52672.,  54368.,  41780.,  43100.,  44420.,  45740.,
      44725.,  46375.,  48025.,  49675.,  67400.,  69680.,  71960.,  74240.,
      94225.,  97175.,  100125., 103075., 103975., 107125., 110275., 113425.,
      92760.,  95360.,  97960.,  100560., 76915.,  78925.,  80935.,  82945.,
      76945.,  79315.,  81685.,  84055.,  112280., 115520., 118760., 122000.,
      152725., 156875., 161025., 165175., 162475., 166825., 171175., 175525.,
      141480., 145040., 148600., 152160., 114895., 117625., 120355., 123085.,
      104924., 107108., 109292., 111476., 149056., 152032., 155008., 157984.,
      197980., 201780., 205580., 209380., 207380., 211340., 215300., 219260.,
      176512., 179744., 182976., 186208., 140468., 142940., 145412., 147884.,
      114099., 115953., 117807., 119661., 160056., 162576., 165096., 167616.,
      210135., 213345., 216555., 219765., 218385., 221715., 225045., 228375.,
      183720., 186432., 189144., 191856., 144645., 146715., 148785., 150855.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   80.,   100.,  120.,  140.,
      160.,  180.,  200.,  220.,  240.,  260.,  280.,  300.,  320.,  340.,
      235.,  249.,  263.,  277.,  142.,  170.,  198.,  226.,  568.,  640.,
      712.,  784.,  856.,  928.,  1000., 1072., 1144., 1216., 1288., 1360.,
      1432., 1504., 1576., 1648., 1018., 1062., 1106., 1150., 702.,  730.,
      758.,  786.,  2008., 2080., 2152., 2224., 2296., 2368., 2440., 2512.,
      2584., 2656., 2728., 2800., 2872., 2944., 3016., 3088., 1898., 1942.,
      1986., 2030., 1262., 1290., 1318., 1346., 3448., 3520., 3592., 3664.,
      3736., 3808., 3880., 3952., 4024., 4096., 4168., 4240., 4312., 4384.,
      4456., 4528., 2778., 2822., 2866., 2910., 1822., 1850., 1878., 1906.,
      4888., 4960., 5032., 5104., 5176., 5248., 5320., 5392., 5464., 5536.,
      5608., 5680., 5752., 5824., 5896., 5968., 3658., 3702., 3746., 3790.,
      1777., 1799., 1821., 1843., 4288., 4340., 4392., 4444., 4496., 4548.,
      4600., 4652., 4704., 4756., 4808., 4860., 4912., 4964., 5016., 5068.,
      2903., 2933., 2963., 2993.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      60582.,   64974.,   69366.,   73758.,   100920.,  107160.,  113400.,
      119640.,  152610.,  160890.,  169170.,  177450.,  180090.,  189330.,
      198570.,  207810.,  172920.,  180696.,  188472.,  196248.,  152094.,
      158214.,  164334.,  170454.,  165352.,  173512.,  181672.,  189832.,
      258592.,  269984.,  281376.,  292768.,  372600.,  387480.,  402360.,
      417240.,  422040.,  438200.,  454360.,  470520.,  387360.,  400800.,
      414240.,  427680.,  328840.,  339304.,  349768.,  360232.,  350810.,
      363890.,  376970.,  390050.,  529480.,  547560.,  565640.,  583720.,
      741150.,  764550.,  787950.,  811350.,  818950.,  843950.,  868950.,
      893950.,  731400.,  752040.,  772680.,  793320.,  607010.,  622970.,
      638930.,  654890.,  607850.,  626690.,  645530.,  664370.,  887560.,
      913320.,  939080.,  964840.,  1207950., 1240950., 1273950., 1306950.,
      1285750., 1320350., 1354950., 1389550., 1120200., 1148520., 1176840.,
      1205160., 910130.,  931850.,  953570.,  975290.,  831976.,  849352.,
      866728.,  884104.,  1182240., 1205920., 1229600., 1253280., 1570680.,
      1600920., 1631160., 1661400., 1645720., 1677240., 1708760., 1740280.,
      1401120., 1426848., 1452576., 1478304., 1115272., 1134952., 1154632.,
      1174312., 906294.,  921054.,  935814.,  950574.,  1271544., 1291608.,
      1311672., 1331736., 1669650., 1695210., 1720770., 1746330., 1735530.,
      1762050., 1788570., 1815090., 1460280., 1481880., 1503480., 1525080.,
      1149870., 1166358., 1182846., 1199334.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   548.,   692.,   836.,
      980.,   1124.,  1268.,  1412.,  1556.,  1700.,  1844.,  1988.,  2132.,
      2276.,  2420.,  1734.,  1838.,  1942.,  2046.,  940.,   1148.,  1356.,
      1564.,  4072.,  4616.,  5160.,  5704.,  6248.,  6792.,  7336.,  7880.,
      8424.,  8968.,  9512.,  10056., 10600., 11144., 11688., 12232., 7676.,
      8012.,  8348.,  8684.,  5100.,  5308.,  5516.,  5724.,  14952., 15496.,
      16040., 16584., 17128., 17672., 18216., 18760., 19304., 19848., 20392.,
      20936., 21480., 22024., 22568., 23112., 14396., 14732., 15068., 15404.,
      9260.,  9468.,  9676.,  9884.,  25832., 26376., 26920., 27464., 28008.,
      28552., 29096., 29640., 30184., 30728., 31272., 31816., 32360., 32904.,
      33448., 33992., 21116., 21452., 21788., 22124., 13420., 13628., 13836.,
      14044., 36712., 37256., 37800., 38344., 38888., 39432., 39976., 40520.,
      41064., 41608., 42152., 42696., 43240., 43784., 44328., 44872., 27836.,
      28172., 28508., 28844., 13550., 13718., 13886., 14054., 32932., 33332.,
      33732., 34132., 34532., 34932., 35332., 35732., 36132., 36532., 36932.,
      37332., 37732., 38132., 38532., 38932., 22422., 22654., 22886., 23118.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      351.,  560.,  820.,  940.,  1060., 980.,  837.,  892.,  1360.,
      1920., 2130., 2340., 2096., 1744., 1820., 2700., 3725., 4050.,
      4375., 3840., 3140., 3080., 4450., 6000., 6325., 6650., 5730.,
      4610., 4078., 5760., 7610., 7920., 8230., 6960., 5506., 4374.,
      6110., 7990., 8260., 8530., 7142., 5598.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   10.,  16.,  22.,  22.,  15.,  10.,  32.,  68.,  89.,
      110., 96.,  60.,  35.,  92.,  173., 194., 215., 176., 105., 60.,
      152., 278., 299., 320., 256., 150., 85.,  212., 383., 404., 425.,
      336., 195., 84.,  193., 328., 343., 358., 269., 150.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2529.,  4084.,  6035.,  6965.,  7895.,  7348.,  6309.,  6620.,  10160.,
      14420., 16060., 17700., 15920., 13292., 13735., 20460., 28325., 30875.,
      33425., 29420., 24115., 23605., 34180., 46175., 48725., 51275., 44260.,
      35665., 31652., 44752., 59180., 61620., 64060., 54224., 42932., 34155.,
      47740., 62465., 64595., 66725., 55900., 43839.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    22.,   59.,   101.,  143.,  150.,  105.,  58.,   204.,
      454.,  610.,  766.,  684.,  434.,  238.,  644.,  1234., 1390.,
      1546., 1284., 774.,  418.,  1084., 2014., 2170., 2326., 1884.,
      1114., 598.,  1524., 2794., 2950., 3106., 2484., 1454., 623.,
      1442., 2465., 2579., 2693., 2034., 1139.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19134.,  31112.,  46210.,  53530.,  60850.,  56840.,  48942.,
      50920.,  78432.,  111640., 124600., 137560., 124000., 103720.,
      106610., 159160., 220750., 240950., 261150., 230200., 188930.,
      184730., 267800., 362150., 382350., 402550., 347800., 280490.,
      249352., 352736., 466680., 486040., 505400., 428000., 339016.,
      269910., 377384., 493930., 510850., 527770., 442280., 346950.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   394.,   706.,   1018.,  1100.,  782.,   380.,   1432.,
      3284.,  4484.,  5684.,  5144.,  3292.,  1740.,  4792.,  9284.,  10484.,
      11684., 9784.,  5932.,  3100.,  8152.,  15284., 16484., 17684., 14424.,
      8572.,  4460.,  11512., 21284., 22484., 23684., 19064., 11212., 4790.,
      11132., 19090., 19978., 20866., 15804., 8870.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      621.,   702.,   1006.,  1120.,  1490.,  1640.,  1715.,  1880.,  1940.,
      2120.,  1810.,  1960.,  1557.,  1674.,  1634.,  1784.,  2512.,  2720.,
      3570.,  3840.,  3970.,  4260.,  4370.,  4680.,  3936.,  4192.,  3290.,
      3488.,  3400.,  3640.,  5070.,  5400.,  7025.,  7450.,  7650.,  8100.,
      8275.,  8750.,  7290.,  7680.,  5980.,  6280.,  5815.,  6160.,  8430.,
      8900.,  11400., 12000., 12025., 12650., 12650., 13300., 10930., 11460.,
      8815.,  9220.,  7838.,  8156.,  11088., 11520., 14670., 15220., 15270.,
      15840., 15870., 16460., 13440., 13920., 10646., 11012., 8478.,  8748.,
      11854., 12220., 15515., 15980., 16040., 16520., 16565., 17060., 13882.,
      14284., 10890., 11196.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   8.,   14.,  20.,  26.,  32.,  38.,  44.,  39.,  44.,
      27.,  30.,  15.,  20.,  52.,  64.,  115., 136., 157., 178., 199., 220.,
      176., 192., 111., 120., 65.,  70.,  172., 184., 325., 346., 367., 388.,
      409., 430., 336., 352., 201., 210., 115., 120., 292., 304., 535., 556.,
      577., 598., 619., 640., 496., 512., 291., 300., 165., 170., 412., 424.,
      745., 766., 787., 808., 829., 850., 656., 672., 381., 390., 164., 168.,
      377., 386., 641., 656., 671., 686., 701., 716., 527., 538., 294., 300.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4581.,   5211.,   7496.,   8384.,   11185.,  12355.,  12955.,  14245.,
      14725.,  16135.,  13808.,  14984.,  11925.,  12843.,  12352.,  13528.,
      19088.,  20720.,  27240.,  29360.,  30400.,  32680.,  33560.,  36000.,
      30320.,  32336.,  25408.,  26968.,  26045.,  27935.,  38960.,  41560.,
      54125.,  57475.,  59075.,  62625.,  64025.,  67775.,  56520.,  59600.,
      46445.,  48815.,  45155.,  47885.,  65560.,  69280.,  88775.,  93525.,
      93725.,  98675.,  98675.,  103825., 85360.,  89560.,  68915.,  72125.,
      61408.,  63928.,  86928.,  90352.,  115080., 119440., 119840., 124360.,
      124600., 129280., 105584., 109392., 83680.,  86584.,  66699.,  68841.,
      93296.,  96200.,  122155., 125845., 126325., 130135., 130495., 134425.,
      109400., 112592., 85851.,  88281.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   48.,   85.,   127.,  169.,  211.,  253.,  295.,
      272.,  308.,  193.,  215.,  88.,   124.,  340.,  428.,  788.,  944.,
      1100., 1256., 1412., 1568., 1276., 1396., 816.,  884.,  448.,  484.,
      1220., 1308., 2348., 2504., 2660., 2816., 2972., 3128., 2476., 2596.,
      1496., 1564., 808.,  844.,  2100., 2188., 3908., 4064., 4220., 4376.,
      4532., 4688., 3676., 3796., 2176., 2244., 1168., 1204., 2980., 3068.,
      5468., 5624., 5780., 5936., 6092., 6248., 4876., 4996., 2856., 2924.,
      1223., 1253., 2832., 2900., 4843., 4957., 5071., 5185., 5299., 5413.,
      4004., 4088., 2243., 2289.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      35118.,   40086.,   57784.,   64792.,  86570.,  95810.,  100610.,
      110810.,  114650.,  125810.,  107800., 117112., 93294.,  100566.,
      95960.,   105272.,  148704.,  161632., 212680., 229480., 237800.,
      255880.,  262920.,  282280.,  237920., 253920., 199640., 212024.,
      203770.,  218770.,  305320.,  325960., 424750., 451350., 464150.,
      492350.,  503550.,  533350.,  445000., 469480., 366010., 384850.,
      355810.,  377530.,  517000.,  546600., 700550., 738350., 739950.,
      779350.,  779350.,  820350.,  674600., 708040., 544930., 570490.,
      486104.,  506168.,  688352.,  715616., 911560., 946280., 949480.,
      985480.,  987400.,  1024680., 836960., 867296., 663512., 686648.,
      529110.,  546174.,  740248.,  763384., 969410., 998810., 1002650.,
      1033010., 1035890., 1067210., 868600., 894040., 681750., 701118.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   324.,   578.,   890.,   1202.,  1514.,  1826.,
      2138.,  2020.,  2292.,  1454.,  1622.,  580.,   852.,   2424.,  3096.,
      5788.,  6988.,  8188.,  9388.,  10588., 11788., 9688.,  10616., 6244.,
      6772.,  3300.,  3572.,  9144.,  9816.,  17788., 18988., 20188., 21388.,
      22588., 23788., 18968., 19896., 11524., 12052., 6020.,  6292.,  15864.,
      16536., 29788., 30988., 32188., 33388., 34588., 35788., 28248., 29176.,
      16804., 17332., 8740.,  9012.,  22584., 23256., 41788., 42988., 44188.,
      45388., 46588., 47788., 37528., 38456., 22084., 22612., 9430.,  9662.,
      21924., 22452., 37610., 38498., 39386., 40274., 41162., 42050., 31188.,
      31844., 17510., 17870.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1161.,  1242.,  1323.,  1404.,  1898.,  2012.,  2126.,  2240.,  2830.,
      2980.,  3130.,  3280.,  3265.,  3430.,  3595.,  3760.,  3700.,  3880.,
      4060.,  4240.,  3470.,  3620.,  3770.,  3920.,  2997.,  3114.,  3231.,
      3348.,  3118.,  3268.,  3418.,  3568.,  4816.,  5024.,  5232.,  5440.,
      6870.,  7140.,  7410.,  7680.,  7650.,  7940.,  8230.,  8520.,  8430.,
      8740.,  9050.,  9360.,  7616.,  7872.,  8128.,  8384.,  6382.,  6580.,
      6778.,  6976.,  6560.,  6800.,  7040.,  7280.,  9810.,  10140., 10470.,
      10800., 13625., 14050., 14475., 14900., 14850., 15300., 15750., 16200.,
      16075., 16550., 17025., 17500., 14190., 14580., 14970., 15360., 11660.,
      11960., 12260., 12560., 11285., 11630., 11975., 12320., 16390., 16860.,
      17330., 17800., 22200., 22800., 23400., 24000., 23425., 24050., 24675.,
      25300., 24650., 25300., 25950., 26600., 21330., 21860., 22390., 22920.,
      17225., 17630., 18035., 18440., 15358., 15676., 15994., 16312., 21744.,
      22176., 22608., 23040., 28790., 29340., 29890., 30440., 29970., 30540.,
      31110., 31680., 31150., 31740., 32330., 32920., 26400., 26880., 27360.,
      27840., 20926., 21292., 21658., 22024., 16686., 16956., 17226., 17496.,
      23342., 23708., 24074., 24440., 30565., 31030., 31495., 31960., 31600.,
      32080., 32560., 33040., 32635., 33130., 33625., 34120., 27362., 27764.,
      28166., 28568., 21474., 21780., 22086., 22392.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   22.,   28.,
      34.,   40.,   46.,   52.,   58.,   64.,   70.,   76.,   82.,   88.,
      73.,   78.,   83.,   88.,   51.,   54.,   57.,   60.,   25.,   30.,
      35.,   40.,   92.,   104.,  116.,  128.,  209.,  230.,  251.,  272.,
      293.,  314.,  335.,  356.,  377.,  398.,  419.,  440.,  336.,  352.,
      368.,  384.,  213.,  222.,  231.,  240.,  125.,  130.,  135.,  140.,
      332.,  344.,  356.,  368.,  629.,  650.,  671.,  692.,  713.,  734.,
      755.,  776.,  797.,  818.,  839.,  860.,  656.,  672.,  688.,  704.,
      393.,  402.,  411.,  420.,  225.,  230.,  235.,  240.,  572.,  584.,
      596.,  608.,  1049., 1070., 1091., 1112., 1133., 1154., 1175., 1196.,
      1217., 1238., 1259., 1280., 976.,  992.,  1008., 1024., 573.,  582.,
      591.,  600.,  325.,  330.,  335.,  340.,  812.,  824.,  836.,  848.,
      1469., 1490., 1511., 1532., 1553., 1574., 1595., 1616., 1637., 1658.,
      1679., 1700., 1296., 1312., 1328., 1344., 753.,  762.,  771.,  780.,
      324.,  328.,  332.,  336.,  745.,  754.,  763.,  772.,  1267., 1282.,
      1297., 1312., 1327., 1342., 1357., 1372., 1387., 1402., 1417., 1432.,
      1043., 1054., 1065., 1076., 582.,  588.,  594.,  600.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8685.,   9315.,   9945.,   10575.,  14320.,  15208.,  16096.,  16984.,
      21485.,  22655.,  23825.,  24995.,  24935.,  26225.,  27515.,  28805.,
      28385.,  29795.,  31205.,  32615.,  26728.,  27904.,  29080.,  30256.,
      23157.,  24075.,  24993.,  25911.,  23816.,  24992.,  26168.,  27344.,
      36944.,  38576.,  40208.,  41840.,  52880.,  55000.,  57120.,  59240.,
      59080.,  61360.,  63640.,  65920.,  65280.,  67720.,  70160.,  72600.,
      59120.,  61136.,  63152.,  65168.,  49640.,  51200.,  52760.,  54320.,
      50665.,  52555.,  54445.,  56335.,  75960.,  78560.,  81160.,  83760.,
      105725., 109075., 112425., 115775., 115475., 119025., 122575., 126125.,
      125225., 128975., 132725., 136475., 110720., 113800., 116880., 119960.,
      91105.,  93475.,  95845.,  98215.,  88255.,  90985.,  93715.,  96445.,
      128320., 132040., 135760., 139480., 173975., 178725., 183475., 188225.,
      183725., 188675., 193625., 198575., 193475., 198625., 203775., 208925.,
      167560., 171760., 175960., 180160., 135415., 138625., 141835., 145045.,
      120920., 123440., 125960., 128480., 171280., 174704., 178128., 181552.,
      226880., 231240., 235600., 239960., 236280., 240800., 245320., 249840.,
      245680., 250360., 255040., 259720., 208304., 212112., 215920., 219728.,
      165176., 168080., 170984., 173888., 131787., 133929., 136071., 138213.,
      184408., 187312., 190216., 193120., 241535., 245225., 248915., 252605.,
      249785., 253595., 257405., 261215., 258035., 261965., 265895., 269825.,
      216400., 219592., 222784., 225976., 169875., 172305., 174735., 177165.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   137.,
      179.,   221.,   263.,   305.,   347.,   389.,   431.,   473.,   515.,
      557.,   599.,   516.,   552.,   588.,   624.,   369.,   391.,   413.,
      435.,   148.,   184.,   220.,   256.,   612.,   700.,   788.,   876.,
      1456.,  1612.,  1768.,  1924.,  2080.,  2236.,  2392.,  2548.,  2704.,
      2860.,  3016.,  3172.,  2460.,  2580.,  2700.,  2820.,  1580.,  1648.,
      1716.,  1784.,  868.,   904.,   940.,   976.,   2372.,  2460.,  2548.,
      2636.,  4576.,  4732.,  4888.,  5044.,  5200.,  5356.,  5512.,  5668.,
      5824.,  5980.,  6136.,  6292.,  4860.,  4980.,  5100.,  5220.,  2940.,
      3008.,  3076.,  3144.,  1588.,  1624.,  1660.,  1696.,  4132.,  4220.,
      4308.,  4396.,  7696.,  7852.,  8008.,  8164.,  8320.,  8476.,  8632.,
      8788.,  8944.,  9100.,  9256.,  9412.,  7260.,  7380.,  7500.,  7620.,
      4300.,  4368.,  4436.,  4504.,  2308.,  2344.,  2380.,  2416.,  5892.,
      5980.,  6068.,  6156.,  10816., 10972., 11128., 11284., 11440., 11596.,
      11752., 11908., 12064., 12220., 12376., 12532., 9660.,  9780.,  9900.,
      10020., 5660.,  5728.,  5796.,  5864.,  2423.,  2453.,  2483.,  2513.,
      5612.,  5680.,  5748.,  5816.,  9599.,  9713.,  9827.,  9941.,  10055.,
      10169., 10283., 10397., 10511., 10625., 10739., 10853., 7944.,  8028.,
      8112.,  8196.,  4451.,  4497.,  4543.,  4589.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67086.,   72054.,   77022.,   81990.,   111128.,  118136.,  125144.,
      132152.,  167290.,  176530.,  185770.,  195010.,  194770.,  204970.,
      215170.,  225370.,  222250.,  233410.,  244570.,  255730.,  209720.,
      219032.,  228344.,  237656.,  181998.,  189270.,  196542.,  203814.,
      186040.,  195352.,  204664.,  213976.,  289248.,  302176.,  315104.,
      328032.,  414760.,  431560.,  448360.,  465160.,  464200.,  482280.,
      500360.,  518440.,  513640.,  533000.,  552360.,  571720.,  465760.,
      481760.,  497760.,  513760.,  391480.,  403864.,  416248.,  428632.,
      398090.,  413090.,  428090.,  443090.,  597640.,  618280.,  638920.,
      659560.,  832750.,  859350.,  885950.,  912550.,  910550.,  938750.,
      966950.,  995150.,  988350.,  1018150., 1047950., 1077750., 874600.,
      899080.,  923560.,  948040.,  720170.,  739010.,  757850.,  776690.,
      697970.,  719690.,  741410.,  763130.,  1015400., 1045000., 1074600.,
      1104200., 1377350., 1415150., 1452950., 1490750., 1455150., 1494550.,
      1533950., 1573350., 1532950., 1573950., 1614950., 1655950., 1328200.,
      1361640., 1395080., 1428520., 1073810., 1099370., 1124930., 1150490.,
      959608.,  979672.,  999736.,  1019800., 1359584., 1386848., 1414112.,
      1441376., 1801320., 1836040., 1870760., 1905480., 1876360., 1912360.,
      1948360., 1984360., 1951400., 1988680., 2025960., 2063240., 1654880.,
      1685216., 1715552., 1745888., 1312504., 1335640., 1358776., 1381912.,
      1047510., 1064574., 1081638., 1098702., 1465976., 1489112., 1512248.,
      1535384., 1920370., 1949770., 1979170., 2008570., 1986250., 2016610.,
      2046970., 2077330., 2052130., 2083450., 2114770., 2146090., 1721240.,
      1746680., 1772120., 1797560., 1351350., 1370718., 1390086., 1409454.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   548.,   692.,   946.,
      1258.,  1570.,  1882.,  2194.,  2506.,  2818.,  3130.,  3442.,  3754.,
      4066.,  4378.,  3860.,  4132.,  4404.,  4676.,  2798.,  2966.,  3134.,
      3302.,  980.,   1252.,  1524.,  1796.,  4408.,  5080.,  5752.,  6424.,
      10796., 11996., 13196., 14396., 15596., 16796., 17996., 19196., 20396.,
      21596., 22796., 23996., 18776., 19704., 20632., 21560., 12148., 12676.,
      13204., 13732., 6420.,  6692.,  6964.,  7236.,  17848., 18520., 19192.,
      19864., 34796., 35996., 37196., 38396., 39596., 40796., 41996., 43196.,
      44396., 45596., 46796., 47996., 37336., 38264., 39192., 40120., 22708.,
      23236., 23764., 24292., 11860., 12132., 12404., 12676., 31288., 31960.,
      32632., 33304., 58796., 59996., 61196., 62396., 63596., 64796., 65996.,
      67196., 68396., 69596., 70796., 71996., 55896., 56824., 57752., 58680.,
      33268., 33796., 34324., 34852., 17300., 17572., 17844., 18116., 44728.,
      45400., 46072., 46744., 82796., 83996., 85196., 86396., 87596., 88796.,
      89996., 91196., 92396., 93596., 94796., 95996., 74456., 75384., 76312.,
      77240., 43828., 44356., 44884., 45412., 18710., 18942., 19174., 19406.,
      43508., 44036., 44564., 45092., 74650., 75538., 76426., 77314., 78202.,
      79090., 79978., 80866., 81754., 82642., 83530., 84418., 61956., 62612.,
      63268., 63924., 34790., 35150., 35510., 35870.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      384.,  610.,  890.,  1010., 1130., 1250., 1144., 969.,  988.,  1500.,
      2110., 2320., 2530., 2740., 2436., 2014., 2030., 3000., 4125., 4450.,
      4775., 5100., 4450., 3620., 3470., 5000., 6725., 7050., 7375., 7700.,
      6610., 5300., 4612., 6500., 8570., 8880., 9190., 9500., 8012., 6322.,
      4956., 6910., 9020., 9290., 9560., 9830., 8212., 6423.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   10.,  20.,  30.,  34.,  31.,  20.,  11.,  35.,  74.,  130.,
      166., 161., 133., 80.,  41.,  105., 194., 310., 346., 311., 243., 140.,
      71.,  175., 314., 490., 526., 461., 353., 200., 101., 245., 434., 670.,
      706., 611., 463., 260., 105., 236., 394., 580., 606., 502., 367., 200.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2775.,  4460.,  6565.,  7495.,  8425.,  9355.,  8612.,  7329.,
      7352.,  11232., 15880., 17520., 19160., 20800., 18560., 15392.,
      15355., 22780., 31425., 33975., 36525., 39075., 34180., 27865.,
      26635., 38460., 51825., 54375., 56925., 59475., 51140., 41065.,
      35840., 50560., 66720., 69160., 71600., 74040., 62496., 49352.,
      38739., 54044., 70585., 72715., 74845., 76975., 64340., 50349.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    22.,   59.,   124.,  196.,  233.,  218.,  143.,  64.,   224.,
      496.,  896.,  1168., 1156., 968.,  588.,  284.,  744.,  1396., 2256.,
      2528., 2296., 1808., 1048., 504.,  1264., 2296., 3616., 3888., 3436.,
      2648., 1508., 724.,  1784., 3196., 4976., 5248., 4576., 3488., 1968.,
      789.,  1782., 2987., 4412., 4612., 3833., 2810., 1535.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21030.,  34024.,  50330.,  57650.,  64970.,  72290.,  66760.,  56958.,
      56632.,  86816.,  123080., 136040., 149000., 161960., 144800., 120280.,
      119330., 177400., 245150., 265350., 285550., 305750., 267800., 218570.,
      208610., 301560., 406750., 426950., 447150., 467350., 402200., 323210.,
      282520., 398752., 526440., 545800., 565160., 584520., 493600., 389944.,
      306294., 427432., 558410., 575330., 592250., 609170., 509320., 398670.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   140.,   394.,   856.,   1400.,  1714.,  1628.,  1078.,
      420.,  1576.,  3596.,  6608.,  8720.,  8732.,  7368.,  4500.,
      2100., 5576.,  10556., 17168., 19280., 17612., 13928., 8100.,
      3780., 9576.,  17516., 27728., 29840., 26492., 20488., 11700.,
      5460., 13576., 24476., 38288., 40400., 35372., 27048., 15300.,
      6110., 13836., 23242., 34392., 35960., 29938., 21980., 12022.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      678.,   768.,   1094.,  1220.,  1615.,  1780.,  1840.,  2020.,  2065.,
      2260.,  2290.,  2500.,  2114.,  2288.,  1803.,  1938.,  1808.,  1976.,
      2768.,  3000.,  3920.,  4220.,  4320.,  4640.,  4720.,  5060.,  5120.,
      5480.,  4576.,  4872.,  3800.,  4028.,  3790.,  4060.,  5630.,  6000.,
      7775.,  8250.,  8400.,  8900.,  9025.,  9550.,  9650.,  10200., 8450.,
      8900.,  6895.,  7240.,  6550.,  6940.,  9470.,  10000., 12775., 13450.,
      13400., 14100., 14025., 14750., 14650., 15400., 12610., 13220., 10135.,
      10600., 8864.,  9224.,  12512., 13000., 16520., 17140., 17120., 17760.,
      17720., 18380., 18320., 19000., 15472., 16024., 12224., 12644., 9606.,
      9912.,  13406., 13820., 17515., 18040., 18040., 18580., 18565., 19120.,
      19090., 19660., 15962., 16424., 12495., 12846.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    14.,   20.,   30.,   40.,   50.,   60.,
      59.,   68.,   55.,   62.,   36.,   40.,   16.,   22.,   56.,   70.,
      124.,  148.,  224.,  260.,  296.,  332.,  292.,  322.,  244.,  266.,
      148.,  160.,  76.,   82.,   196.,  210.,  364.,  388.,  584.,  620.,
      656.,  692.,  592.,  622.,  464.,  486.,  268.,  280.,  136.,  142.,
      336.,  350.,  604.,  628.,  944.,  980.,  1016., 1052., 892.,  922.,
      684.,  706.,  388.,  400.,  196.,  202.,  476.,  490.,  844.,  868.,
      1304., 1340., 1376., 1412., 1192., 1222., 904.,  926.,  508.,  520.,
      205.,  210.,  461.,  472.,  770.,  788.,  1134., 1160., 1186., 1212.,
      983.,  1004., 719.,  734.,  392.,  400.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5019.,   5721.,   8176.,   9160.,   12155.,  13445.,  13925.,  15335.,
      15695.,  17225.,  17465.,  19115.,  16192.,  17560.,  13857.,  14919.,
      13708.,  15028.,  21088.,  22912.,  29980.,  32340.,  33140.,  35660.,
      36300.,  38980.,  39460.,  42300.,  35360.,  37696.,  29428.,  31228.,
      29105.,  31235.,  43360.,  46280.,  60025.,  63775.,  64975.,  68925.,
      69925.,  74075.,  74875.,  79225.,  65680.,  69240.,  53675.,  56405.,
      50945.,  54035.,  73760.,  77960.,  99625.,  104975., 104575., 110125.,
      109525., 115275., 114475., 120425., 98640.,  103480., 79355.,  83045.,
      69532.,  72388.,  98208.,  102080., 129740., 134660., 134500., 139580.,
      139260., 144500., 144020., 149420., 121696., 126080., 96196.,  99532.,
      75651.,  78081.,  105616., 108904., 138035., 142205., 142205., 146495.,
      146375., 150785., 150545., 155075., 125920., 129592., 98601.,  101391.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,    28.,    48.,    85.,   127.,  192.,  264.,  336.,  408.,
      415.,  481.,   396.,   448.,   263.,  293.,  94.,   138.,  368.,  472.,
      854.,  1034.,  1584.,  1856.,  2128., 2400., 2138., 2366., 1808., 1976.,
      1106., 1198.,  534.,   578.,   1408., 1512., 2654., 2834., 4304., 4576.,
      4848., 5120.,  4418.,  4646.,  3488., 3656., 2026., 2118., 974.,  1018.,
      2448., 2552.,  4454.,  4634.,  7024., 7296., 7568., 7840., 6698., 6926.,
      5168., 5336.,  2946.,  3038.,  1414., 1458., 3488., 3592., 6254., 6434.,
      9744., 10016., 10288., 10560., 8978., 9206., 6848., 7016., 3866., 3958.,
      1549., 1587.,  3500.,  3584.,  5869., 6007., 8672., 8872., 9072., 9272.,
      7543., 7705.,  5532.,  5648.,  3023., 3085.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38550.,   44094.,   63128.,   70904.,   94210.,   104410.,  108250.,
      119410.,  122290.,  134410.,  136330.,  149410.,  126680.,  137528.,
      108606.,  117030.,  106664.,  117128.,  164512.,  178976.,  234360.,
      253080.,  259480.,  279480.,  284600.,  305880.,  309720.,  332280.,
      277920.,  296480.,  231560.,  245864.,  228010.,  244930.,  340200.,
      363400.,  471550.,  501350.,  510950.,  542350.,  550350.,  583350.,
      589750.,  624350.,  517800.,  546120.,  423490.,  445210.,  401770.,
      426370.,  582120.,  615560.,  786750.,  829350.,  826150.,  870350.,
      865550.,  911350.,  904950.,  952350.,  780200.,  818760.,  627970.,
      657370.,  550760.,  573512.,  778144.,  808992.,  1028280., 1067480.,
      1066200., 1106680., 1104120., 1145880., 1142040., 1185080., 965280.,
      1000224., 763208.,  789800.,  600438.,  619806.,  838424.,  864632.,
      1095970., 1129210., 1129210., 1163410., 1162450., 1197610., 1195690.,
      1231810., 1000280., 1029560., 783390.,  805638.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   324.,   578.,   890.,   1352.,  1896.,  2440.,
      2984.,  3098.,  3602.,  2996.,  3396.,  2006.,  2238.,  620.,   956.,
      2632.,  3432.,  6292.,  7684.,  11856., 13968., 16080., 18192., 16324.,
      18100., 13896., 15208., 8540.,  9260.,  3980.,  4316.,  10632., 11432.,
      20212., 21604., 32976., 35088., 37200., 39312., 34084., 35860., 27016.,
      28328., 15740., 16460., 7340.,  7676.,  18632., 19432., 34132., 35524.,
      54096., 56208., 58320., 60432., 51844., 53620., 40136., 41448., 22940.,
      23660., 10700., 11036., 26632., 27432., 48052., 49444., 75216., 77328.,
      79440., 81552., 69604., 71380., 53256., 54568., 30140., 30860., 12030.,
      12326., 27252., 27908., 45794., 46874., 67784., 69352., 70920., 72488.,
      59066., 60338., 43380., 44292., 23734., 24222.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1266.,  1356.,  1446.,  1536.,  2062.,  2188.,  2314.,  2440.,  3065.,
      3230.,  3395.,  3560.,  3500.,  3680.,  3860.,  4040.,  3935.,  4130.,
      4325.,  4520.,  4370.,  4580.,  4790.,  5000.,  4054.,  4228.,  4402.,
      4576.,  3471.,  3606.,  3741.,  3876.,  3448.,  3616.,  3784.,  3952.,
      5304.,  5536.,  5768.,  6000.,  7540.,  7840.,  8140.,  8440.,  8320.,
      8640.,  8960.,  9280.,  9100.,  9440.,  9780.,  10120., 9880.,  10240.,
      10600., 10960., 8856.,  9152.,  9448.,  9744.,  7372.,  7600.,  7828.,
      8056.,  7310.,  7580.,  7850.,  8120.,  10890., 11260., 11630., 12000.,
      15075., 15550., 16025., 16500., 16300., 16800., 17300., 17800., 17525.,
      18050., 18575., 19100., 18750., 19300., 19850., 20400., 16450., 16900.,
      17350., 17800., 13445., 13790., 14135., 14480., 12710., 13100., 13490.,
      13880., 18410., 18940., 19470., 20000., 24875., 25550., 26225., 26900.,
      26100., 26800., 27500., 28200., 27325., 28050., 28775., 29500., 28550.,
      29300., 30050., 30800., 24610., 25220., 25830., 26440., 19805., 20270.,
      20735., 21200., 17368., 17728., 18088., 18448., 24536., 25024., 25512.,
      26000., 32420., 33040., 33660., 34280., 33600., 34240., 34880., 35520.,
      34780., 35440., 36100., 36760., 35960., 36640., 37320., 38000., 30392.,
      30944., 31496., 32048., 24028., 24448., 24868., 25288., 18906., 19212.,
      19518., 19824., 26398., 26812., 27226., 27640., 34505., 35030., 35555.,
      36080., 35540., 36080., 36620., 37160., 36575., 37130., 37685., 38240.,
      37610., 38180., 38750., 39320., 31462., 31924., 32386., 32848., 24639.,
      24990., 25341., 25692.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   22.,   28.,
      34.,   40.,   50.,   60.,   70.,   80.,   90.,   100.,  110.,  120.,
      109.,  118.,  127.,  136.,  103.,  110.,  117.,  124.,  68.,   72.,
      76.,   80.,   26.,   32.,   38.,   44.,   98.,   112.,  126.,  140.,
      224.,  248.,  272.,  296.,  412.,  448.,  484.,  520.,  556.,  592.,
      628.,  664.,  554.,  584.,  614.,  644.,  466.,  488.,  510.,  532.,
      284.,  296.,  308.,  320.,  146.,  152.,  158.,  164.,  378.,  392.,
      406.,  420.,  704.,  728.,  752.,  776.,  1132., 1168., 1204., 1240.,
      1276., 1312., 1348., 1384., 1154., 1184., 1214., 1244., 906.,  928.,
      950.,  972.,  524.,  536.,  548.,  560.,  266.,  272.,  278.,  284.,
      658.,  672.,  686.,  700.,  1184., 1208., 1232., 1256., 1852., 1888.,
      1924., 1960., 1996., 2032., 2068., 2104., 1754., 1784., 1814., 1844.,
      1346., 1368., 1390., 1412., 764.,  776.,  788.,  800.,  386.,  392.,
      398.,  404.,  938.,  952.,  966.,  980.,  1664., 1688., 1712., 1736.,
      2572., 2608., 2644., 2680., 2716., 2752., 2788., 2824., 2354., 2384.,
      2414., 2444., 1786., 1808., 1830., 1852., 1004., 1016., 1028., 1040.,
      405.,  410.,  415.,  420.,  911.,  922.,  933.,  944.,  1522., 1540.,
      1558., 1576., 2242., 2268., 2294., 2320., 2346., 2372., 2398., 2424.,
      1945., 1966., 1987., 2008., 1423., 1438., 1453., 1468., 776.,  784.,
      792.,  800.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9507.,   10209.,  10911.,  11613.,  15608.,  16592.,  17576.,  18560.,
      23335.,  24625.,  25915.,  27205.,  26785.,  28195.,  29605.,  31015.,
      30235.,  31765.,  33295.,  34825.,  33685.,  35335.,  36985.,  38635.,
      31352.,  32720.,  34088.,  35456.,  26913.,  27975.,  29037.,  30099.,
      26420.,  27740.,  29060.,  30380.,  40800.,  42624.,  44448.,  46272.,
      58180.,  60540.,  62900.,  65260.,  64380.,  66900.,  69420.,  71940.,
      70580.,  73260.,  75940.,  78620.,  76780.,  79620.,  82460.,  85300.,
      68960.,  71296.,  73632.,  75968.,  57500.,  59300.,  61100.,  62900.,
      56605.,  58735.,  60865.,  62995.,  84520.,  87440.,  90360.,  93280.,
      117225., 120975., 124725., 128475., 126975., 130925., 134875., 138825.,
      136725., 140875., 145025., 149175., 146475., 150825., 155175., 159525.,
      128680., 132240., 135800., 139360., 105295., 108025., 110755., 113485.,
      99565.,  102655., 105745., 108835., 144360., 148560., 152760., 156960.,
      195225., 200575., 205925., 211275., 204975., 210525., 216075., 221625.,
      214725., 220475., 226225., 231975., 224475., 230425., 236375., 242325.,
      193640., 198480., 203320., 208160., 155935., 159625., 163315., 167005.,
      136916., 139772., 142628., 145484., 193504., 197376., 201248., 205120.,
      255780., 260700., 265620., 270540., 265180., 270260., 275340., 280420.,
      274580., 279820., 285060., 290300., 283980., 289380., 294780., 300180.,
      240096., 244480., 248864., 253248., 189884., 193220., 196556., 199892.,
      149475., 151905., 154335., 156765., 208760., 212048., 215336., 218624.,
      272935., 277105., 281275., 285445., 281185., 285475., 289765., 294055.,
      289435., 293845., 298255., 302665., 297685., 302215., 306745., 311275.,
      249080., 252752., 256424., 260096., 195105., 197895., 200685., 203475.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   137.,
      179.,   221.,   263.,   328.,   400.,   472.,   544.,   616.,   688.,
      760.,   832.,   779.,   845.,   911.,   977.,   752.,   804.,   856.,
      908.,   503.,   533.,   563.,   593.,   154.,   198.,   242.,   286.,
      656.,   760.,   864.,   968.,   1570.,  1750.,  1930.,  2110.,  2960.,
      3232.,  3504.,  3776.,  4048.,  4320.,  4592.,  4864.,  4102.,  4330.,
      4558.,  4786.,  3488.,  3656.,  3824.,  3992.,  2142.,  2234.,  2326.,
      2418.,  1034.,  1078.,  1122.,  1166.,  2736.,  2840.,  2944.,  3048.,
      5170.,  5350.,  5530.,  5710.,  8400.,  8672.,  8944.,  9216.,  9488.,
      9760.,  10032., 10304., 8662.,  8890.,  9118.,  9346.,  6848.,  7016.,
      7184.,  7352.,  3982.,  4074.,  4166.,  4258.,  1914.,  1958.,  2002.,
      2046.,  4816.,  4920.,  5024.,  5128.,  8770.,  8950.,  9130.,  9310.,
      13840., 14112., 14384., 14656., 14928., 15200., 15472., 15744., 13222.,
      13450., 13678., 13906., 10208., 10376., 10544., 10712., 5822.,  5914.,
      6006.,  6098.,  2794.,  2838.,  2882.,  2926.,  6896.,  7000.,  7104.,
      7208.,  12370., 12550., 12730., 12910., 19280., 19552., 19824., 20096.,
      20368., 20640., 20912., 21184., 17782., 18010., 18238., 18466., 13568.,
      13736., 13904., 14072., 7662.,  7754.,  7846.,  7938.,  3069.,  3107.,
      3145.,  3183.,  6936.,  7020.,  7104.,  7188.,  11633., 11771., 11909.,
      12047., 17192., 17392., 17592., 17792., 17992., 18192., 18392., 18592.,
      14963., 15125., 15287., 15449., 10976., 11092., 11208., 11324., 5999.,
      6061.,  6123.,  6185.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      73590.,   79134.,   84678.,   90222.,   121336.,  129112.,  136888.,
      144664.,  181970.,  192170.,  202370.,  212570.,  209450.,  220610.,
      231770.,  242930.,  236930.,  249050.,  261170.,  273290.,  264410.,
      277490.,  290570.,  303650.,  246520.,  257368.,  268216.,  279064.,
      211902.,  220326.,  228750.,  237174.,  206728.,  217192.,  227656.,
      238120.,  319904.,  334368.,  348832.,  363296.,  456920.,  475640.,
      494360.,  513080.,  506360.,  526360.,  546360.,  566360.,  555800.,
      577080.,  598360.,  619640.,  605240.,  627800.,  650360.,  672920.,
      544160.,  562720.,  581280.,  599840.,  454120.,  468424.,  482728.,
      497032.,  445370.,  462290.,  479210.,  496130.,  665800.,  689000.,
      712200.,  735400.,  924350.,  954150.,  983950.,  1013750., 1002150.,
      1033550., 1064950., 1096350., 1079950., 1112950., 1145950., 1178950.,
      1157750., 1192350., 1226950., 1261550., 1017800., 1046120., 1074440.,
      1102760., 833330.,  855050.,  876770.,  898490.,  788090.,  812690.,
      837290.,  861890.,  1143240., 1176680., 1210120., 1243560., 1546750.,
      1589350., 1631950., 1674550., 1624550., 1668750., 1712950., 1757150.,
      1702350., 1748150., 1793950., 1839750., 1780150., 1827550., 1874950.,
      1922350., 1536200., 1574760., 1613320., 1651880., 1237490., 1266890.,
      1296290., 1325690., 1087240., 1109992., 1132744., 1155496., 1536928.,
      1567776., 1598624., 1629472., 2031960., 2071160., 2110360., 2149560.,
      2107000., 2147480., 2187960., 2228440., 2182040., 2223800., 2265560.,
      2307320., 2257080., 2300120., 2343160., 2386200., 1908640., 1943584.,
      1978528., 2013472., 1509736., 1536328., 1562920., 1589512., 1188726.,
      1208094., 1227462., 1246830., 1660408., 1686616., 1712824., 1739032.,
      2171090., 2204330., 2237570., 2270810., 2236970., 2271170., 2305370.,
      2339570., 2302850., 2338010., 2373170., 2408330., 2368730., 2404850.,
      2440970., 2477090., 1982200., 2011480., 2040760., 2070040., 1552830.,
      1575078., 1597326., 1619574.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      946.,    1258.,   1570.,   1882.,   2344.,   2888.,   3432.,   3976.,
      4520.,   5064.,   5608.,   6152.,   5866.,   6370.,   6874.,   7378.,
      5732.,   6132.,   6532.,   6932.,   3862.,   4094.,   4326.,   4558.,
      1020.,   1356.,   1692.,   2028.,   4744.,   5544.,   6344.,   7144.,
      11684.,  13076.,  14468.,  15860.,  22352.,  24464.,  26576.,  28688.,
      30800.,  32912.,  35024.,  37136.,  31508.,  33284.,  35060.,  36836.,
      26952.,  28264.,  29576.,  30888.,  16620.,  17340.,  18060.,  18780.,
      7740.,   8076.,   8412.,   8748.,   20744.,  21544.,  22344.,  23144.,
      39524.,  40916.,  42308.,  43700.,  64592.,  66704.,  68816.,  70928.,
      73040.,  75152.,  77264.,  79376.,  67028.,  68804.,  70580.,  72356.,
      53192.,  54504.,  55816.,  57128.,  31020.,  31740.,  32460.,  33180.,
      14460.,  14796.,  15132.,  15468.,  36744.,  37544.,  38344.,  39144.,
      67364.,  68756.,  70148.,  71540.,  106832., 108944., 111056., 113168.,
      115280., 117392., 119504., 121616., 102548., 104324., 106100., 107876.,
      79432.,  80744.,  82056.,  83368.,  45420.,  46140.,  46860.,  47580.,
      21180.,  21516.,  21852.,  22188.,  52744.,  53544.,  54344.,  55144.,
      95204.,  96596.,  97988.,  99380.,  149072., 151184., 153296., 155408.,
      157520., 159632., 161744., 163856., 138068., 139844., 141620., 143396.,
      105672., 106984., 108296., 109608., 59820.,  60540.,  61260.,  61980.,
      23870.,  24166.,  24462.,  24758.,  54084.,  54740.,  55396.,  56052.,
      90898.,  91978.,  93058.,  94138.,  134568., 136136., 137704., 139272.,
      140840., 142408., 143976., 145544., 117322., 118594., 119866., 121138.,
      86180.,  87092.,  88004.,  88916.,  47158.,  47646.,  48134.,  48622.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      318.,  510.,  750.,  870.,  816.,  705.,  796.,  1220., 1730.,
      1940., 1756., 1474., 1610., 2400., 3325., 3650., 3230., 2660.,
      2690., 3900., 5275., 5600., 4850., 3920., 3770., 5400., 7225.,
      7550., 6470., 5180., 4588., 6460., 8510., 8820., 7444., 5878.,
      4710., 6570., 8580., 8850., 7404., 5799.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   7.,   10.,  13.,  10.,  9.,   29.,  39.,  49.,  59.,
      40.,  34.,  95.,  116., 137., 158., 100., 79.,  200., 221., 242.,
      263., 160., 124., 305., 326., 347., 368., 220., 143., 331., 349.,
      367., 385., 220., 105., 236., 247., 258., 269., 150.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2283.,  3708.,  5505.,  6435.,  6084.,  5289.,  5888.,  9088.,  12960.,
      14600., 13280., 11192., 12115., 18140., 25225., 27775., 24660., 20365.,
      20575., 29900., 40525., 43075., 37380., 30265., 29035., 41660., 55825.,
      58375., 50100., 40165., 35672., 50272., 66280., 68720., 58048., 45872.,
      36807., 51372., 67125., 69255., 57972., 45429.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    22.,   42.,   62.,   82.,   67.,   52.,   184.,  256.,
      328.,  400.,  280.,  221.,  646.,  802.,  958.,  1114., 719.,
      551.,  1426., 1582., 1738., 1894., 1169., 881.,  2206., 2362.,
      2518., 2674., 1619., 1056., 2464., 2600., 2736., 2872., 1652.,
      789.,  1782., 1866., 1950., 2034., 1139.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17238.,  28200.,  42090.,  49410.,  46920.,  40926.,  45208.,
      70048.,  100200., 113160., 103200., 87160.,  93890.,  140920.,
      196350., 216550., 192600., 159290., 160850., 234040., 317550.,
      337750., 293400., 237770., 227810., 327160., 438750., 458950.,
      394200., 316250., 281272., 396576., 523080., 542440., 458400.,
      362392., 290982., 406248., 530970., 547890., 458760., 359598.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   284.,   428.,   572.,   486.,   340.,   1288.,  1832.,
      2376.,  2920.,  2084.,  1570.,  4724.,  5924.,  7124.,  8324.,  5434.,
      4090.,  10724., 11924., 13124., 14324., 8914.,  6610.,  16724., 17924.,
      19124., 20324., 12394., 8100.,  18984., 20040., 21096., 22152., 12788.,
      6110.,  13836., 14492., 15148., 15804., 8870.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      564.,   636.,   918.,   1020.,  1365.,  1500.,  1590.,  1740.,  1506.,
      1632.,  1311.,  1410.,  1460.,  1592.,  2256.,  2440.,  3220.,  3460.,
      3620.,  3880.,  3296.,  3512.,  2780.,  2948.,  3010.,  3220.,  4510.,
      4800.,  6275.,  6650.,  6900.,  7300.,  6130.,  6460.,  5065.,  5320.,
      5080.,  5380.,  7390.,  7800.,  10025., 10550., 10650., 11200., 9250.,
      9700.,  7495.,  7840.,  7150.,  7540.,  10270., 10800., 13775., 14450.,
      14400., 15100., 12370., 12940., 9925.,  10360., 8828.,  9176.,  12448.,
      12920., 16420., 17020., 17020., 17640., 14384., 14888., 11372., 11756.,
      9132.,  9420.,  12750., 13140., 16665., 17160., 17190., 17700., 14394.,
      14808., 11283., 11598.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   8.,   11.,  14.,  17.,  20.,  23.,  26.,  18.,  20.,
      14.,  18.,  48.,  58.,  68.,  78.,  88.,  98.,  108., 118., 74.,  80.,
      59.,  68.,  169., 190., 211., 232., 253., 274., 295., 316., 188., 200.,
      149., 158., 379., 400., 421., 442., 463., 484., 505., 526., 308., 320.,
      239., 248., 589., 610., 631., 652., 673., 694., 715., 736., 428., 440.,
      278., 286., 644., 662., 680., 698., 716., 734., 752., 770., 430., 440.,
      205., 210., 461., 472., 483., 494., 505., 516., 527., 538., 294., 300.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4143.,   4701.,   6816.,   7608.,   10215.,  11265.,  11985.,  13155.,
      11424.,  12408.,  9993.,   10767.,  10996.,  12028.,  17088.,  18528.,
      24500.,  26380.,  27660.,  29700.,  25280.,  26976.,  21388.,  22708.,
      22985.,  24635.,  34560.,  36840.,  48225.,  51175.,  53175.,  56325.,
      47360.,  49960.,  39215.,  41225.,  39365.,  41735.,  57360.,  60600.,
      77925.,  82075.,  82875.,  87225.,  72080.,  75640.,  58475.,  61205.,
      55745.,  58835.,  80160.,  84360.,  107625., 112975., 112575., 118125.,
      96800.,  101320., 77735.,  81185.,  69268.,  72028.,  97728.,  101472.,
      128980., 133740., 133740., 138660., 113088., 117088., 89452.,  92500.,
      71895.,  74181.,  100416., 103512., 131295., 135225., 135465., 139515.,
      113472., 116760., 88977.,  91479.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   48.,   68.,   88.,   108.,  128.,  148.,  168.,
      123.,  137.,  82.,   110.,  312.,  384.,  456.,  528.,  600.,  672.,
      744.,  816.,  526.,  570.,  391.,  457.,  1172., 1328., 1484., 1640.,
      1796., 1952., 2108., 2264., 1369., 1459., 1051., 1117., 2732., 2888.,
      3044., 3200., 3356., 3512., 3668., 3824., 2269., 2359., 1711., 1777.,
      4292., 4448., 4604., 4760., 4916., 5072., 5228., 5384., 3169., 3259.,
      2066., 2126., 4824., 4960., 5096., 5232., 5368., 5504., 5640., 5776.,
      3246., 3322., 1549., 1587., 3500., 3584., 3668., 3752., 3836., 3920.,
      4004., 4088., 2243., 2289.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31686.,   36078.,   52440.,   58680.,   78930.,   87210.,  92970.,
      102210.,  88920.,   96696.,   77982.,   84102.,   85256.,  93416.,
      132896.,  144288.,  191000.,  205880.,  216120.,  232280., 197920.,
      211360.,  167720.,  178184.,  179530.,  192610.,  270440., 288520.,
      377950.,  401350.,  417350.,  442350.,  372200.,  392840., 308530.,
      324490.,  309850.,  328690.,  451880.,  477640.,  614350., 647350.,
      653750.,  688350.,  569000.,  597320.,  461890.,  483610., 440170.,
      464770.,  633320.,  666760.,  850750.,  893350.,  890150., 934350.,
      765800.,  801800.,  615250.,  642730.,  548744.,  570728., 774432.,
      804256.,  1022360., 1060280., 1060280., 1099480., 896800., 928672.,
      709544.,  733832.,  570534.,  588750.,  797016.,  821688., 1042290.,
      1073610., 1075530., 1107810., 901080.,  927288.,  706686., 726630.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   324.,   468.,   612.,   756.,   900.,   1044.,
      1188.,  902.,   1006.,  540.,   748.,   2216.,  2760.,  3304.,  3848.,
      4392.,  4936.,  5480.,  6024.,  3948.,  4284.,  2810.,  3314.,  8668.,
      9868.,  11068., 12268., 13468., 14668., 15868., 17068., 10418., 11114.,
      7850.,  8354.,  20668., 21868., 23068., 24268., 25468., 26668., 27868.,
      29068., 17378., 18074., 12890., 13394., 32668., 33868., 35068., 36268.,
      37468., 38668., 39868., 41068., 24338., 25034., 15900., 16364., 37288.,
      38344., 39400., 40456., 41512., 42568., 43624., 44680., 25196., 25788.,
      12030., 12326., 27252., 27908., 28564., 29220., 29876., 30532., 31188.,
      31844., 17510., 17870.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1056.,  1128.,  1200.,  1272.,  1734.,  1836.,  1938.,  2040.,  2595.,
      2730.,  2865.,  3000.,  3030.,  3180.,  3330.,  3480.,  2886.,  3012.,
      3138.,  3264.,  2523.,  2622.,  2721.,  2820.,  2788.,  2920.,  3052.,
      3184.,  4328.,  4512.,  4696.,  4880.,  6200.,  6440.,  6680.,  6920.,
      6980.,  7240.,  7500.,  7760.,  6376.,  6592.,  6808.,  7024.,  5392.,
      5560.,  5728.,  5896.,  5810.,  6020.,  6230.,  6440.,  8730.,  9020.,
      9310.,  9600.,  12175., 12550., 12925., 13300., 13400., 13800., 14200.,
      14600., 11930., 12260., 12590., 12920., 9875.,  10130., 10385., 10640.,
      9860.,  10160., 10460., 10760., 14370., 14780., 15190., 15600., 19525.,
      20050., 20575., 21100., 20750., 21300., 21850., 22400., 18050., 18500.,
      18950., 19400., 14645., 14990., 15335., 15680., 13910., 14300., 14690.,
      15080., 20010., 20540., 21070., 21600., 26875., 27550., 28225., 28900.,
      28100., 28800., 29500., 30200., 24170., 24740., 25310., 25880., 19415.,
      19850., 20285., 20720., 17308., 17656., 18004., 18352., 24424., 24896.,
      25368., 25840., 32240., 32840., 33440., 34040., 33420., 34040., 34660.,
      35280., 28264., 28768., 29272., 29776., 22360., 22744., 23128., 23512.,
      17976., 18264., 18552., 18840., 25110., 25500., 25890., 26280., 32835.,
      33330., 33825., 34320., 33870., 34380., 34890., 35400., 28374., 28788.,
      29202., 29616., 22251., 22566., 22881., 23196.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   19.,   22.,
      25.,   28.,   31.,   34.,   37.,   40.,   43.,   46.,   49.,   52.,
      34.,   36.,   38.,   40.,   24.,   28.,   32.,   36.,   86.,   96.,
      106.,  116.,  126.,  136.,  146.,  156.,  166.,  176.,  186.,  196.,
      206.,  216.,  226.,  236.,  142.,  148.,  154.,  160.,  109.,  118.,
      127.,  136.,  317.,  338.,  359.,  380.,  401.,  422.,  443.,  464.,
      485.,  506.,  527.,  548.,  569.,  590.,  611.,  632.,  364.,  376.,
      388.,  400.,  289.,  298.,  307.,  316.,  737.,  758.,  779.,  800.,
      821.,  842.,  863.,  884.,  905.,  926.,  947.,  968.,  989.,  1010.,
      1031., 1052., 604.,  616.,  628.,  640.,  469.,  478.,  487.,  496.,
      1157., 1178., 1199., 1220., 1241., 1262., 1283., 1304., 1325., 1346.,
      1367., 1388., 1409., 1430., 1451., 1472., 844.,  856.,  868.,  880.,
      548.,  556.,  564.,  572.,  1270., 1288., 1306., 1324., 1342., 1360.,
      1378., 1396., 1414., 1432., 1450., 1468., 1486., 1504., 1522., 1540.,
      850.,  860.,  870.,  880.,  405.,  410.,  415.,  420.,  911.,  922.,
      933.,  944.,  955.,  966.,  977.,  988.,  999.,  1010., 1021., 1032.,
      1043., 1054., 1065., 1076., 582.,  588.,  594.,  600.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7863.,   8421.,   8979.,   9537.,   13032.,  13824.,  14616.,  15408.,
      19635.,  20685.,  21735.,  22785.,  23085.,  24255.,  25425.,  26595.,
      22104.,  23088.,  24072.,  25056.,  19401.,  20175.,  20949.,  21723.,
      21212.,  22244.,  23276.,  24308.,  33088.,  34528.,  35968.,  37408.,
      47580.,  49460.,  51340.,  53220.,  53780.,  55820.,  57860.,  59900.,
      49280.,  50976.,  52672.,  54368.,  41780.,  43100.,  44420.,  45740.,
      44725.,  46375.,  48025.,  49675.,  67400.,  69680.,  71960.,  74240.,
      94225.,  97175.,  100125., 103075., 103975., 107125., 110275., 113425.,
      92760.,  95360.,  97960.,  100560., 76915.,  78925.,  80935.,  82945.,
      76945.,  79315.,  81685.,  84055.,  112280., 115520., 118760., 122000.,
      152725., 156875., 161025., 165175., 162475., 166825., 171175., 175525.,
      141480., 145040., 148600., 152160., 114895., 117625., 120355., 123085.,
      109165., 112255., 115345., 118435., 157160., 161360., 165560., 169760.,
      211225., 216575., 221925., 227275., 220975., 226525., 232075., 237625.,
      190200., 194720., 199240., 203760., 152875., 156325., 159775., 163225.,
      136460., 139220., 141980., 144740., 192640., 196384., 200128., 203872.,
      254380., 259140., 263900., 268660., 263780., 268700., 273620., 278540.,
      223168., 227168., 231168., 235168., 176612., 179660., 182708., 185756.,
      142071., 144357., 146643., 148929., 198504., 201600., 204696., 207792.,
      259635., 263565., 267495., 271425., 267885., 271935., 275985., 280035.,
      224472., 227760., 231048., 234336., 176073., 178575., 181077., 183579.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   120.,
      140.,   160.,   180.,   200.,   220.,   240.,   260.,   280.,   300.,
      320.,   340.,   235.,   249.,   263.,   277.,   142.,   170.,   198.,
      226.,   568.,   640.,   712.,   784.,   856.,   928.,   1000.,  1072.,
      1144.,  1216.,  1288.,  1360.,  1432.,  1504.,  1576.,  1648.,  1018.,
      1062.,  1106.,  1150.,  731.,   797.,   863.,   929.,   2224.,  2380.,
      2536.,  2692.,  2848.,  3004.,  3160.,  3316.,  3472.,  3628.,  3784.,
      3940.,  4096.,  4252.,  4408.,  4564.,  2669.,  2759.,  2849.,  2939.,
      2051.,  2117.,  2183.,  2249.,  5344.,  5500.,  5656.,  5812.,  5968.,
      6124.,  6280.,  6436.,  6592.,  6748.,  6904.,  7060.,  7216.,  7372.,
      7528.,  7684.,  4469.,  4559.,  4649.,  4739.,  3371.,  3437.,  3503.,
      3569.,  8464.,  8620.,  8776.,  8932.,  9088.,  9244.,  9400.,  9556.,
      9712.,  9868.,  10024., 10180., 10336., 10492., 10648., 10804., 6269.,
      6359.,  6449.,  6539.,  4086.,  4146.,  4206.,  4266.,  9544.,  9680.,
      9816.,  9952.,  10088., 10224., 10360., 10496., 10632., 10768., 10904.,
      11040., 11176., 11312., 11448., 11584., 6434.,  6510.,  6586.,  6662.,
      3069.,  3107.,  3145.,  3183.,  6936.,  7020.,  7104.,  7188.,  7272.,
      7356.,  7440.,  7524.,  7608.,  7692.,  7776.,  7860.,  7944.,  8028.,
      8112.,  8196.,  4451.,  4497.,  4543.,  4589.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      60582.,   64974.,   69366.,   73758.,   100920.,  107160.,  113400.,
      119640.,  152610.,  160890.,  169170.,  177450.,  180090.,  189330.,
      198570.,  207810.,  172920.,  180696.,  188472.,  196248.,  152094.,
      158214.,  164334.,  170454.,  165352.,  173512.,  181672.,  189832.,
      258592.,  269984.,  281376.,  292768.,  372600.,  387480.,  402360.,
      417240.,  422040.,  438200.,  454360.,  470520.,  387360.,  400800.,
      414240.,  427680.,  328840.,  339304.,  349768.,  360232.,  350810.,
      363890.,  376970.,  390050.,  529480.,  547560.,  565640.,  583720.,
      741150.,  764550.,  787950.,  811350.,  818950.,  843950.,  868950.,
      893950.,  731400.,  752040.,  772680.,  793320.,  607010.,  622970.,
      638930.,  654890.,  607850.,  626690.,  645530.,  664370.,  887560.,
      913320.,  939080.,  964840.,  1207950., 1240950., 1273950., 1306950.,
      1285750., 1320350., 1354950., 1389550., 1120200., 1148520., 1176840.,
      1205160., 910130.,  931850.,  953570.,  975290.,  864890.,  889490.,
      914090.,  938690.,  1245640., 1279080., 1312520., 1345960., 1674750.,
      1717350., 1759950., 1802550., 1752550., 1796750., 1840950., 1885150.,
      1509000., 1545000., 1581000., 1617000., 1213250., 1240730., 1268210.,
      1295690., 1083688., 1105672., 1127656., 1149640., 1530144., 1559968.,
      1589792., 1619616., 2020920., 2058840., 2096760., 2134680., 2095960.,
      2135160., 2174360., 2213560., 1773600., 1805472., 1837344., 1869216.,
      1403848., 1428136., 1452424., 1476712., 1129638., 1147854., 1166070.,
      1184286., 1578552., 1603224., 1627896., 1652568., 2064930., 2096250.,
      2127570., 2158890., 2130810., 2163090., 2195370., 2227650., 1785720.,
      1811928., 1838136., 1864344., 1400862., 1420806., 1440750., 1460694.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   548.,   692.,   836.,
      980.,   1124.,  1268.,  1412.,  1556.,  1700.,  1844.,  1988.,  2132.,
      2276.,  2420.,  1734.,  1838.,  1942.,  2046.,  940.,   1148.,  1356.,
      1564.,  4072.,  4616.,  5160.,  5704.,  6248.,  6792.,  7336.,  7880.,
      8424.,  8968.,  9512.,  10056., 10600., 11144., 11688., 12232., 7676.,
      8012.,  8348.,  8684.,  5290.,  5794.,  6298.,  6802.,  16556., 17756.,
      18956., 20156., 21356., 22556., 23756., 24956., 26156., 27356., 28556.,
      29756., 30956., 32156., 33356., 34556., 20386., 21082., 21778., 22474.,
      15370., 15874., 16378., 16882., 40556., 41756., 42956., 44156., 45356.,
      46556., 47756., 48956., 50156., 51356., 52556., 53756., 54956., 56156.,
      57356., 58556., 34306., 35002., 35698., 36394., 25450., 25954., 26458.,
      26962., 64556., 65756., 66956., 68156., 69356., 70556., 71756., 72956.,
      74156., 75356., 76556., 77756., 78956., 80156., 81356., 82556., 48226.,
      48922., 49618., 50314., 31500., 31964., 32428., 32892., 73896., 74952.,
      76008., 77064., 78120., 79176., 80232., 81288., 82344., 83400., 84456.,
      85512., 86568., 87624., 88680., 89736., 50012., 50604., 51196., 51788.,
      23870., 24166., 24462., 24758., 54084., 54740., 55396., 56052., 56708.,
      57364., 58020., 58676., 59332., 59988., 60644., 61300., 61956., 62612.,
      63268., 63924., 34790., 35150., 35510., 35870.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      351.,  560.,  820.,  940.,  1060., 980.,   837.,   892.,  1360.,  1920.,
      2130., 2340., 2096., 1744., 1820., 2700.,  3725.,  4050., 4375.,  3840.,
      3140., 3080., 4450., 6000., 6325., 6650.,  5730.,  4610., 4340.,  6200.,
      8275., 8600., 8925., 7620., 6080., 5296.,  7440.,  9780., 10090., 10400.,
      8752., 6892., 5445., 7580., 9880., 10150., 10420., 8696., 6795.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   10.,  16.,  22.,  22.,  15.,  10.,  32.,  68.,
      89.,  110., 96.,  60.,  42.,  114., 219., 264., 309., 252.,
      150., 102., 249., 444., 489., 534., 417., 240., 162., 384.,
      669., 714., 759., 582., 330., 196., 440., 734., 773., 812.,
      600., 330., 147., 322., 526., 550., 574., 416., 225.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2529.,  4084.,  6035.,  6965.,  7895.,  7348.,  6309.,  6620.,  10160.,
      14420., 16060., 17700., 15920., 13292., 13735., 20460., 28325., 30875.,
      33425., 29420., 24115., 23605., 34180., 46175., 48725., 51275., 44260.,
      35665., 33475., 47900., 64025., 66575., 69125., 59100., 47215., 41228.,
      57968., 76260., 78700., 81140., 68336., 53852., 42597., 59332., 77375.,
      79505., 81635., 68164., 53289.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    22.,   59.,   101.,  143.,  150.,  105.,  58.,   204.,  454.,
      610.,  766.,  684.,  434.,  279.,  786.,  1545., 1887., 2229., 1842.,
      1107., 729.,  1806., 3255., 3597., 3939., 3102., 1797., 1179., 2826.,
      4965., 5307., 5649., 4362., 2487., 1474., 3324., 5566., 5866., 6166.,
      4572., 2522., 1121., 2462., 4031., 4217., 4403., 3198., 1733.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19134.,  31112.,  46210.,  53530.,  60850.,  56840.,  48942.,
      50920.,  78432.,  111640., 124600., 137560., 124000., 103720.,
      106610., 159160., 220750., 240950., 261150., 230200., 188930.,
      184730., 267800., 362150., 382350., 402550., 347800., 280490.,
      262850., 376440., 503550., 523750., 543950., 465400., 372050.,
      325288., 457568., 602200., 621560., 640920., 540000., 425704.,
      336942., 469448., 612370., 629290., 646210., 539720., 422046.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   394.,   706.,   1018.,  1100.,  782.,   380.,   1432.,
      3284.,  4484.,  5684.,  5144.,  3292.,  2010.,  5796.,  11550., 14214.,
      16878., 14052., 8490.,  5490.,  13716., 24870., 27534., 30198., 23892.,
      13890., 8970.,  21636., 38190., 40854., 43518., 33732., 19290., 11420.,
      25816., 43316., 45668., 48020., 35672., 19708., 8750.,  19244., 31546.,
      33010., 34474., 25068., 13598.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      621.,   702.,   1006.,  1120.,  1490.,  1640.,  1715.,  1880.,  1940.,
      2120.,  1810.,  1960.,  1557.,  1674.,  1634.,  1784.,  2512.,  2720.,
      3570.,  3840.,  3970.,  4260.,  4370.,  4680.,  3936.,  4192.,  3290.,
      3488.,  3400.,  3640.,  5070.,  5400.,  7025.,  7450.,  7650.,  8100.,
      8275.,  8750.,  7290.,  7680.,  5980.,  6280.,  5815.,  6160.,  8430.,
      8900.,  11400., 12000., 12025., 12650., 12650., 13300., 10930., 11460.,
      8815.,  9220.,  8230.,  8680.,  11790., 12400., 15775., 16550., 16400.,
      17200., 17025., 17850., 14570., 15240., 11650., 12160., 10190., 10592.,
      14336., 14880., 18870., 19560., 19470., 20180., 20070., 20800., 16912.,
      17504., 13334., 13784., 10557., 10890., 14710., 15160., 19190., 19760.,
      19715., 20300., 20240., 20840., 16906., 17392., 13221., 13590.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    14.,   20.,   26.,   32.,   38.,   44.,
      39.,   44.,   27.,   30.,   15.,   20.,   52.,   64.,   115.,  136.,
      157.,  178.,  199.,  220.,  176.,  192.,  111.,  120.,  72.,   84.,
      201.,  228.,  393.,  438.,  483.,  528.,  573.,  618.,  471.,  504.,
      282.,  300.,  192.,  204.,  471.,  498.,  843.,  888.,  933.,  978.,
      1023., 1068., 801.,  834.,  462.,  480.,  312.,  324.,  741.,  768.,
      1293., 1338., 1383., 1428., 1473., 1518., 1131., 1164., 642.,  660.,
      381.,  392.,  856.,  880.,  1429., 1468., 1507., 1546., 1585., 1624.,
      1172., 1200., 645.,  660.,  287.,  294.,  629.,  644.,  1028., 1052.,
      1076., 1100., 1124., 1148., 815.,  832.,  441.,  450.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4581.,   5211.,   7496.,   8384.,   11185.,  12355.,  12955.,  14245.,
      14725.,  16135.,  13808.,  14984.,  11925.,  12843.,  12352.,  13528.,
      19088.,  20720.,  27240.,  29360.,  30400.,  32680.,  33560.,  36000.,
      30320.,  32336.,  25408.,  26968.,  26045.,  27935.,  38960.,  41560.,
      54125.,  57475.,  59075.,  62625.,  64025.,  67775.,  56520.,  59600.,
      46445.,  48815.,  45155.,  47885.,  65560.,  69280.,  88775.,  93525.,
      93725.,  98675.,  98675.,  103825., 85360.,  89560.,  68915.,  72125.,
      64265.,  67835.,  92160.,  97000.,  123425., 129575., 128375., 134725.,
      133325., 139875., 114200., 119520., 91385.,  95435.,  80056.,  83248.,
      112688., 117008., 148400., 153880., 153160., 158800., 157920., 163720.,
      133136., 137840., 105016., 108592., 83205.,  85851.,  115976., 119552.,
      151345., 155875., 155515., 160165., 159685., 164455., 133424., 137288.,
      104373., 107307.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    85.,    127.,   169.,   211.,   253.,
      295.,   272.,   308.,   193.,   215.,   88.,    124.,   340.,   428.,
      788.,   944.,   1100.,  1256.,  1412.,  1568.,  1276.,  1396.,  816.,
      884.,   489.,   579.,   1416.,  1620.,  2829.,  3171.,  3513.,  3855.,
      4197.,  4539.,  3492.,  3744.,  2109.,  2247.,  1389.,  1479.,  3456.,
      3660.,  6249.,  6591.,  6933.,  7275.,  7617.,  7959.,  6012.,  6264.,
      3489.,  3627.,  2289.,  2379.,  5496.,  5700.,  9669.,  10011., 10353.,
      10695., 11037., 11379., 8532.,  8784.,  4869.,  5007.,  2884.,  2968.,
      6508.,  6692.,  10904., 11204., 11504., 11804., 12104., 12404., 8980.,
      9196.,  4956.,  5072.,  2201.,  2255.,  4836.,  4952.,  7921.,  8107.,
      8293.,  8479.,  8665.,  8851.,  6296.,  6428.,  3413.,  3483.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      35118.,   40086.,   57784.,   64792.,   86570.,   95810.,   100610.,
      110810.,  114650.,  125810.,  107800.,  117112.,  93294.,   100566.,
      95960.,   105272.,  148704.,  161632.,  212680.,  229480.,  237800.,
      255880.,  262920.,  282280.,  237920.,  253920.,  199640.,  212024.,
      203770.,  218770.,  305320.,  325960.,  424750.,  451350.,  464150.,
      492350.,  503550.,  533350.,  445000.,  469480.,  366010.,  384850.,
      355810.,  377530.,  517000.,  546600.,  700550.,  738350.,  739950.,
      779350.,  779350.,  820350.,  674600.,  708040.,  544930.,  570490.,
      507850.,  536290.,  728680.,  767240.,  976350.,  1025350., 1015750.,
      1066350., 1055150., 1107350., 904200.,  946600.,  723850.,  756130.,
      634616.,  660056.,  893536.,  927968.,  1177000., 1220680., 1214920.,
      1259880., 1252840., 1299080., 1056480., 1093984., 833528.,  862040.,
      660654.,  681750.,  921016.,  949528.,  1202090., 1238210., 1235330.,
      1272410., 1268570., 1306610., 1060120., 1090936., 829422.,  852822.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   324.,   578.,   890.,   1202.,  1514.,  1826.,
      2138.,  2020.,  2292.,  1454.,  1622.,  580.,   852.,   2424.,  3096.,
      5788.,  6988.,  8188.,  9388.,  10588., 11788., 9688.,  10616., 6244.,
      6772.,  3570.,  4266.,  10572., 12156., 21390., 24054., 26718., 29382.,
      32046., 34710., 26844., 28812., 16290., 17370., 10530., 11226., 26412.,
      27996., 48030., 50694., 53358., 56022., 58686., 61350., 46524., 48492.,
      27090., 28170., 17490., 18186., 42252., 43836., 74670., 77334., 79998.,
      82662., 85326., 87990., 66204., 68172., 37890., 38970., 22420., 23076.,
      50712., 52152., 85132., 87484., 89836., 92188., 94540., 96892., 70264.,
      71960., 38836., 39748., 17230., 17654., 37908., 38820., 62162., 63626.,
      65090., 66554., 68018., 69482., 49476., 50516., 26846., 27398.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1161.,  1242.,  1323.,  1404.,  1898.,  2012.,  2126.,  2240.,  2830.,
      2980.,  3130.,  3280.,  3265.,  3430.,  3595.,  3760.,  3700.,  3880.,
      4060.,  4240.,  3470.,  3620.,  3770.,  3920.,  2997.,  3114.,  3231.,
      3348.,  3118.,  3268.,  3418.,  3568.,  4816.,  5024.,  5232.,  5440.,
      6870.,  7140.,  7410.,  7680.,  7650.,  7940.,  8230.,  8520.,  8430.,
      8740.,  9050.,  9360.,  7616.,  7872.,  8128.,  8384.,  6382.,  6580.,
      6778.,  6976.,  6560.,  6800.,  7040.,  7280.,  9810.,  10140., 10470.,
      10800., 13625., 14050., 14475., 14900., 14850., 15300., 15750., 16200.,
      16075., 16550., 17025., 17500., 14190., 14580., 14970., 15360., 11660.,
      11960., 12260., 12560., 11285., 11630., 11975., 12320., 16390., 16860.,
      17330., 17800., 22200., 22800., 23400., 24000., 23425., 24050., 24675.,
      25300., 24650., 25300., 25950., 26600., 21330., 21860., 22390., 22920.,
      17225., 17630., 18035., 18440., 16010., 16460., 16910., 17360., 22970.,
      23580., 24190., 24800., 30775., 31550., 32325., 33100., 32000., 32800.,
      33600., 34400., 33225., 34050., 34875., 35700., 28470., 29140., 29810.,
      30480., 22790., 23300., 23810., 24320., 19978., 20380., 20782., 21184.,
      28128., 28672., 29216., 29760., 37050., 37740., 38430., 39120., 38230.,
      38940., 39650., 40360., 39410., 40140., 40870., 41600., 33232., 33824.,
      34416., 35008., 26218., 26668., 27118., 27568., 20781., 21114., 21447.,
      21780., 28970., 29420., 29870., 30320., 37810., 38380., 38950., 39520.,
      38845., 39430., 40015., 40600., 39880., 40480., 41080., 41680., 33326.,
      33812., 34298., 34784., 26073., 26442., 26811., 27180.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   22.,   28.,
      34.,   40.,   46.,   52.,   58.,   64.,   70.,   76.,   82.,   88.,
      73.,   78.,   83.,   88.,   51.,   54.,   57.,   60.,   25.,   30.,
      35.,   40.,   92.,   104.,  116.,  128.,  209.,  230.,  251.,  272.,
      293.,  314.,  335.,  356.,  377.,  398.,  419.,  440.,  336.,  352.,
      368.,  384.,  213.,  222.,  231.,  240.,  132.,  144.,  156.,  168.,
      375.,  402.,  429.,  456.,  741.,  786.,  831.,  876.,  921.,  966.,
      1011., 1056., 1101., 1146., 1191., 1236., 909.,  942.,  975.,  1008.,
      546.,  564.,  582.,  600.,  372.,  384.,  396.,  408.,  915.,  942.,
      969.,  996.,  1641., 1686., 1731., 1776., 1821., 1866., 1911., 1956.,
      2001., 2046., 2091., 2136., 1569., 1602., 1635., 1668., 906.,  924.,
      942.,  960.,  612.,  624.,  636.,  648.,  1455., 1482., 1509., 1536.,
      2541., 2586., 2631., 2676., 2721., 2766., 2811., 2856., 2901., 2946.,
      2991., 3036., 2229., 2262., 2295., 2328., 1266., 1284., 1302., 1320.,
      751.,  762.,  773.,  784.,  1688., 1712., 1736., 1760., 2819., 2858.,
      2897., 2936., 2975., 3014., 3053., 3092., 3131., 3170., 3209., 3248.,
      2316., 2344., 2372., 2400., 1275., 1290., 1305., 1320., 567.,  574.,
      581.,  588.,  1243., 1258., 1273., 1288., 2032., 2056., 2080., 2104.,
      2128., 2152., 2176., 2200., 2224., 2248., 2272., 2296., 1613., 1630.,
      1647., 1664., 873.,  882.,  891.,  900.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8685.,   9315.,   9945.,   10575.,  14320.,  15208.,  16096.,  16984.,
      21485.,  22655.,  23825.,  24995.,  24935.,  26225.,  27515.,  28805.,
      28385.,  29795.,  31205.,  32615.,  26728.,  27904.,  29080.,  30256.,
      23157.,  24075.,  24993.,  25911.,  23816.,  24992.,  26168.,  27344.,
      36944.,  38576.,  40208.,  41840.,  52880.,  55000.,  57120.,  59240.,
      59080.,  61360.,  63640.,  65920.,  65280.,  67720.,  70160.,  72600.,
      59120.,  61136.,  63152.,  65168.,  49640.,  51200.,  52760.,  54320.,
      50665.,  52555.,  54445.,  56335.,  75960.,  78560.,  81160.,  83760.,
      105725., 109075., 112425., 115775., 115475., 119025., 122575., 126125.,
      125225., 128975., 132725., 136475., 110720., 113800., 116880., 119960.,
      91105.,  93475.,  95845.,  98215.,  88255.,  90985.,  93715.,  96445.,
      128320., 132040., 135760., 139480., 173975., 178725., 183475., 188225.,
      183725., 188675., 193625., 198575., 193475., 198625., 203775., 208925.,
      167560., 171760., 175960., 180160., 135415., 138625., 141835., 145045.,
      125845., 129415., 132985., 136555., 180680., 185520., 190360., 195200.,
      242225., 248375., 254525., 260675., 251975., 258325., 264675., 271025.,
      261725., 268275., 274825., 281375., 224400., 229720., 235040., 240360.,
      179725., 183775., 187825., 191875., 157712., 160904., 164096., 167288.,
      222128., 226448., 230768., 235088., 292680., 298160., 303640., 309120.,
      302080., 307720., 313360., 319000., 311480., 317280., 323080., 328880.,
      262736., 267440., 272144., 276848., 207344., 210920., 214496., 218072.,
      164421., 167067., 169713., 172359., 229264., 232840., 236416., 239992.,
      299285., 303815., 308345., 312875., 307535., 312185., 316835., 321485.,
      315785., 320555., 325325., 330095., 263944., 267808., 271672., 275536.,
      206541., 209475., 212409., 215343.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   137.,
      179.,   221.,   263.,   305.,   347.,   389.,   431.,   473.,   515.,
      557.,   599.,   516.,   552.,   588.,   624.,   369.,   391.,   413.,
      435.,   148.,   184.,   220.,   256.,   612.,   700.,   788.,   876.,
      1456.,  1612.,  1768.,  1924.,  2080.,  2236.,  2392.,  2548.,  2704.,
      2860.,  3016.,  3172.,  2460.,  2580.,  2700.,  2820.,  1580.,  1648.,
      1716.,  1784.,  909.,   999.,   1089.,  1179.,  2676.,  2880.,  3084.,
      3288.,  5397.,  5739.,  6081.,  6423.,  6765.,  7107.,  7449.,  7791.,
      8133.,  8475.,  8817.,  9159.,  6792.,  7044.,  7296.,  7548.,  4113.,
      4251.,  4389.,  4527.,  2709.,  2799.,  2889.,  2979.,  6756.,  6960.,
      7164.,  7368.,  12237., 12579., 12921., 13263., 13605., 13947., 14289.,
      14631., 14973., 15315., 15657., 15999., 11832., 12084., 12336., 12588.,
      6873.,  7011.,  7149.,  7287.,  4509.,  4599.,  4689.,  4779.,  10836.,
      11040., 11244., 11448., 19077., 19419., 19761., 20103., 20445., 20787.,
      21129., 21471., 21813., 22155., 22497., 22839., 16872., 17124., 17376.,
      17628., 9633.,  9771.,  9909.,  10047., 5704.,  5788.,  5872.,  5956.,
      12876., 13060., 13244., 13428., 21580., 21880., 22180., 22480., 22780.,
      23080., 23380., 23680., 23980., 24280., 24580., 24880., 17796., 18012.,
      18228., 18444., 9824.,  9940.,  10056., 10172., 4361.,  4415.,  4469.,
      4523.,  9584.,  9700.,  9816.,  9932.,  15701., 15887., 16073., 16259.,
      16445., 16631., 16817., 17003., 17189., 17375., 17561., 17747., 12492.,
      12624., 12756., 12888., 6773.,  6843.,  6913.,  6983.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67086.,   72054.,   77022.,   81990.,   111128.,  118136.,  125144.,
      132152.,  167290.,  176530.,  185770.,  195010.,  194770.,  204970.,
      215170.,  225370.,  222250.,  233410.,  244570.,  255730.,  209720.,
      219032.,  228344.,  237656.,  181998.,  189270.,  196542.,  203814.,
      186040.,  195352.,  204664.,  213976.,  289248.,  302176.,  315104.,
      328032.,  414760.,  431560.,  448360.,  465160.,  464200.,  482280.,
      500360.,  518440.,  513640.,  533000.,  552360.,  571720.,  465760.,
      481760.,  497760.,  513760.,  391480.,  403864.,  416248.,  428632.,
      398090.,  413090.,  428090.,  443090.,  597640.,  618280.,  638920.,
      659560.,  832750.,  859350.,  885950.,  912550.,  910550.,  938750.,
      966950.,  995150.,  988350.,  1018150., 1047950., 1077750., 874600.,
      899080.,  923560.,  948040.,  720170.,  739010.,  757850.,  776690.,
      697970.,  719690.,  741410.,  763130.,  1015400., 1045000., 1074600.,
      1104200., 1377350., 1415150., 1452950., 1490750., 1455150., 1494550.,
      1533950., 1573350., 1532950., 1573950., 1614950., 1655950., 1328200.,
      1361640., 1395080., 1428520., 1073810., 1099370., 1124930., 1150490.,
      997850.,  1026290., 1054730., 1083170., 1433160., 1471720., 1510280.,
      1548840., 1921950., 1970950., 2019950., 2068950., 1999750., 2050350.,
      2100950., 2151550., 2077550., 2129750., 2181950., 2234150., 1781800.,
      1824200., 1866600., 1909000., 1427450., 1459730., 1492010., 1524290.,
      1253272., 1278712., 1304152., 1329592., 1765472., 1799904., 1834336.,
      1868768., 2326600., 2370280., 2413960., 2457640., 2401640., 2446600.,
      2491560., 2536520., 2476680., 2522920., 2569160., 2615400., 2089440.,
      2126944., 2164448., 2201952., 1649176., 1677688., 1706200., 1734712.,
      1308078., 1329174., 1350270., 1371366., 1824152., 1852664., 1881176.,
      1909688., 2381530., 2417650., 2453770., 2489890., 2447410., 2484490.,
      2521570., 2558650., 2513290., 2551330., 2589370., 2627410., 2100920.,
      2131736., 2162552., 2193368., 1644174., 1667574., 1690974., 1714374.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      946.,    1258.,   1570.,   1882.,   2194.,   2506.,   2818.,   3130.,
      3442.,   3754.,   4066.,   4378.,   3860.,   4132.,   4404.,   4676.,
      2798.,   2966.,   3134.,   3302.,   980.,    1252.,   1524.,   1796.,
      4408.,   5080.,   5752.,   6424.,   10796.,  11996.,  13196.,  14396.,
      15596.,  16796.,  17996.,  19196.,  20396.,  21596.,  22796.,  23996.,
      18776.,  19704.,  20632.,  21560.,  12148.,  12676.,  13204.,  13732.,
      6690.,   7386.,   8082.,   8778.,   20124.,  21708.,  23292.,  24876.,
      41070.,  43734.,  46398.,  49062.,  51726.,  54390.,  57054.,  59718.,
      62382.,  65046.,  67710.,  70374.,  52428.,  54396.,  56364.,  58332.,
      31890.,  32970.,  34050.,  35130.,  20610.,  21306.,  22002.,  22698.,
      51804.,  53388.,  54972.,  56556.,  94350.,  97014.,  99678.,  102342.,
      105006., 107670., 110334., 112998., 115662., 118326., 120990., 123654.,
      91788.,  93756.,  95724.,  97692.,  53490.,  54570.,  55650.,  56730.,
      34530.,  35226.,  35922.,  36618.,  83484.,  85068.,  86652.,  88236.,
      147630., 150294., 152958., 155622., 158286., 160950., 163614., 166278.,
      168942., 171606., 174270., 176934., 131148., 133116., 135084., 137052.,
      75090.,  76170.,  77250.,  78330.,  44420.,  45076.,  45732.,  46388.,
      100504., 101944., 103384., 104824., 168764., 171116., 173468., 175820.,
      178172., 180524., 182876., 185228., 187580., 189932., 192284., 194636.,
      139448., 141144., 142840., 144536., 77092.,  78004.,  78916.,  79828.,
      34190.,  34614.,  35038.,  35462.,  75236.,  76148.,  77060.,  77972.,
      123394., 124858., 126322., 127786., 129250., 130714., 132178., 133642.,
      135106., 136570., 138034., 139498., 98292.,  99332.,  100372., 101412.,
      53342.,  53894.,  54446.,  54998.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      384.,  610.,  890.,   1010.,  1130.,  1250.,  1144.,  969.,
      988.,  1500., 2110.,  2320.,  2530.,  2740.,  2436.,  2014.,
      2030., 3000., 4125.,  4450.,  4775.,  5100.,  4450.,  3620.,
      3470., 5000., 6725.,  7050.,  7375.,  7700.,  6610.,  5300.,
      4910., 7000., 9325.,  9650.,  9975.,  10300., 8770.,  6980.,
      6004., 8420., 11050., 11360., 11670., 11980., 10060., 7906.,
      6180., 8590., 11180., 11450., 11720., 11990., 9988.,  7791.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   10.,  20.,   30.,   34.,   31.,   20.,   11.,  35.,
      74.,  130., 166., 161.,  133.,  80.,   50.,   133.,  252., 410.,
      488., 441., 346., 200.,  125.,  298.,  522.,  800.,  878., 756.,
      571., 320., 200., 463.,  792.,  1190., 1268., 1071., 796., 440.,
      249., 549., 902., 1310., 1378., 1127., 815.,  440.,  189., 408.,
      658., 940., 982., 790.,  563.,  300.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2775.,  4460.,  6565.,  7495.,  8425.,  9355.,  8612.,  7329.,
      7352.,  11232., 15880., 17520., 19160., 20800., 18560., 15392.,
      15355., 22780., 31425., 33975., 36525., 39075., 34180., 27865.,
      26635., 38460., 51825., 54375., 56925., 59475., 51140., 41065.,
      37915., 54140., 72225., 74775., 77325., 79875., 68100., 54265.,
      46784., 65664., 86240., 88680., 91120., 93560., 78624., 61832.,
      48387., 67292., 87625., 89755., 91885., 94015., 78356., 61149.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    22.,   59.,   124.,   196.,   233.,  218.,  143.,  64.,   224.,
      496.,  896.,  1168., 1156.,  968.,   588.,  337.,  926.,  1791., 2956.,
      3556., 3249., 2570., 1495.,  907.,   2186., 3861., 5956., 6556., 5679.,
      4310., 2425., 1477., 3446.,  5931.,  8956., 9556., 8109., 6050., 3355.,
      1892., 4184., 6892., 10032., 10560., 8656., 6272., 3392., 1453., 3142.,
      5075., 7260., 7588., 6113.,  4362.,  2327.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21030.,  34024.,  50330.,  57650.,  64970.,  72290.,  66760.,  56958.,
      56632.,  86816.,  123080., 136040., 149000., 161960., 144800., 120280.,
      119330., 177400., 245150., 265350., 285550., 305750., 267800., 218570.,
      208610., 301560., 406750., 426950., 447150., 467350., 402200., 323210.,
      297890., 425720., 568350., 588550., 608750., 628950., 536600., 427850.,
      369304., 518560., 681320., 700680., 720040., 739400., 621600., 489016.,
      382902., 532648., 693770., 710690., 727610., 744530., 620680., 484494.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   394.,   856.,   1400.,  1714.,  1628.,  1078.,
      420.,   1576.,  3596.,  6608.,  8720.,  8732.,  7368.,  4500.,
      2450.,  6868.,  13446., 22376., 27080., 24894., 19780., 11546.,
      6890.,  16708., 29646., 45896., 50600., 43974., 33460., 18866.,
      11330., 26548., 45846., 69416., 74120., 63054., 47140., 26186.,
      14740., 32648., 53852., 78480., 82640., 67820., 49192., 26628.,
      11390., 24652., 39850., 57048., 59640., 48082., 34332., 18326.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      678.,   768.,   1094.,  1220.,  1615.,  1780.,  1840.,  2020.,  2065.,
      2260.,  2290.,  2500.,  2114.,  2288.,  1803.,  1938.,  1808.,  1976.,
      2768.,  3000.,  3920.,  4220.,  4320.,  4640.,  4720.,  5060.,  5120.,
      5480.,  4576.,  4872.,  3800.,  4028.,  3790.,  4060.,  5630.,  6000.,
      7775.,  8250.,  8400.,  8900.,  9025.,  9550.,  9650.,  10200., 8450.,
      8900.,  6895.,  7240.,  6550.,  6940.,  9470.,  10000., 12775., 13450.,
      13400., 14100., 14025., 14750., 14650., 15400., 12610., 13220., 10135.,
      10600., 9310.,  9820.,  13310., 14000., 17775., 18650., 18400., 19300.,
      19025., 19950., 19650., 20600., 16770., 17540., 13375., 13960., 11552.,
      12008., 16224., 16840., 21320., 22100., 21920., 22720., 22520., 23340.,
      23120., 23960., 19440., 20120., 15296., 15812., 11982., 12360., 16670.,
      17180., 21715., 22360., 22240., 22900., 22765., 23440., 23290., 23980.,
      19418., 19976., 15159., 15582.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    14.,   20.,   30.,   40.,   50.,   60.,
      59.,   68.,   55.,   62.,   36.,   40.,   16.,   22.,   56.,   70.,
      124.,  148.,  224.,  260.,  296.,  332.,  292.,  322.,  244.,  266.,
      148.,  160.,  85.,   100.,  233.,  266.,  450.,  504.,  742.,  820.,
      898.,  976.,  819.,  882.,  647.,  692.,  376.,  400.,  235.,  250.,
      563.,  596.,  990.,  1044., 1522., 1600., 1678., 1756., 1449., 1512.,
      1097., 1142., 616.,  640.,  385.,  400.,  893.,  926.,  1530., 1584.,
      2302., 2380., 2458., 2536., 2079., 2142., 1547., 1592., 856.,  880.,
      484.,  498.,  1068., 1098., 1756., 1804., 2552., 2620., 2688., 2756.,
      2200., 2254., 1592., 1630., 860.,  880.,  369.,  378.,  797.,  816.,
      1286., 1316., 1838., 1880., 1922., 1964., 1547., 1580., 1103., 1126.,
      588.,  600.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5019.,   5721.,   8176.,   9160.,   12155.,  13445.,  13925.,  15335.,
      15695.,  17225.,  17465.,  19115.,  16192.,  17560.,  13857.,  14919.,
      13708.,  15028.,  21088.,  22912.,  29980.,  32340.,  33140.,  35660.,
      36300.,  38980.,  39460.,  42300.,  35360.,  37696.,  29428.,  31228.,
      29105.,  31235.,  43360.,  46280.,  60025.,  63775.,  64975.,  68925.,
      69925.,  74075.,  74875.,  79225.,  65680.,  69240.,  53675.,  56405.,
      50945.,  54035.,  73760.,  77960.,  99625.,  104975., 104575., 110125.,
      109525., 115275., 114475., 120425., 98640.,  103480., 79355.,  83045.,
      72785.,  76835.,  104160., 109640., 139225., 146175., 144175., 151325.,
      149125., 156475., 154075., 161625., 131600., 137720., 105035., 109685.,
      90844.,  94468.,  127648., 132544., 167820., 174020., 172580., 178940.,
      177340., 183860., 182100., 188780., 153184., 158592., 120580., 124684.,
      94515.,  97521.,  131536., 135592., 171395., 176525., 175565., 180815.,
      179735., 185105., 183905., 189395., 153376., 157816., 119769., 123135.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    85.,    127.,   192.,   264.,   336.,
      408.,   415.,   481.,   396.,   448.,   263.,   293.,   94.,    138.,
      368.,   472.,   854.,   1034.,  1584.,  1856.,  2128.,  2400.,  2138.,
      2366.,  1808.,  1976.,  1106.,  1198.,  587.,   701.,   1660.,  1912.,
      3267.,  3681.,  5456.,  6056.,  6656.,  7256.,  6129.,  6615.,  4876.,
      5224.,  2849.,  3035.,  1727.,  1841.,  4180.,  4432.,  7407.,  7821.,
      11456., 12056., 12656., 13256., 10989., 11475., 8356.,  8704.,  4709.,
      4895.,  2867.,  2981.,  6700.,  6952.,  11547., 11961., 17456., 18056.,
      18656., 19256., 15849., 16335., 11836., 12184., 6569.,  6755.,  3702.,
      3810.,  8192.,  8424.,  13502., 13874., 19664., 20192., 20720., 21248.,
      16994., 17414., 12320., 12616., 6666.,  6822.,  2853.,  2923.,  6172.,
      6320.,  9973.,  10207., 14272., 14600., 14928., 15256., 12031., 12289.,
      8588.,  8768.,  4583.,  4677.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38550.,   44094.,   63128.,   70904.,   94210.,   104410.,  108250.,
      119410.,  122290.,  134410.,  136330.,  149410.,  126680.,  137528.,
      108606.,  117030.,  106664.,  117128.,  164512.,  178976.,  234360.,
      253080.,  259480.,  279480.,  284600.,  305880.,  309720.,  332280.,
      277920.,  296480.,  231560.,  245864.,  228010.,  244930.,  340200.,
      363400.,  471550.,  501350.,  510950.,  542350.,  550350.,  583350.,
      589750.,  624350.,  517800.,  546120.,  423490.,  445210.,  401770.,
      426370.,  582120.,  615560.,  786750.,  829350.,  826150.,  870350.,
      865550.,  911350.,  904950.,  952350.,  780200.,  818760.,  627970.,
      657370.,  575530.,  607810.,  824040.,  867720.,  1101950., 1157350.,
      1141350., 1198350., 1180750., 1239350., 1220150., 1280350., 1042600.,
      1091400., 832450.,  869530.,  720488.,  749384.,  1012640., 1051680.,
      1331640., 1381080., 1369560., 1420280., 1407480., 1459480., 1445400.,
      1498680., 1216160., 1259296., 957512.,  990248.,  750774.,  774750.,
      1045016., 1077368., 1361890., 1402810., 1395130., 1437010., 1428370.,
      1471210., 1461610., 1505410., 1219160., 1254584., 952158.,  979014.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,    324.,    578.,    890.,    1352.,   1896.,
      2440.,   2984.,   3098.,   3602.,   2996.,   3396.,   2006.,   2238.,
      620.,    956.,    2632.,   3432.,   6292.,   7684.,   11856.,  13968.,
      16080.,  18192.,  16324.,  18100.,  13896.,  15208.,  8540.,   9260.,
      4330.,   5218.,   12476.,  14444.,  24822.,  28062.,  41752.,  46456.,
      51160.,  55864.,  47358.,  51174.,  37820.,  40556.,  22162.,  23626.,
      13210.,  14098.,  32156.,  34124.,  57222.,  60462.,  88792.,  93496.,
      98200.,  102904., 85518.,  89334.,  65180.,  67916.,  36802.,  38266.,
      22090.,  22978.,  51836.,  53804.,  89622.,  92862.,  135832., 140536.,
      145240., 149944., 123678., 127494., 92540.,  95276.,  51442.,  52906.,
      28940.,  29788.,  64136.,  65960.,  105844., 108772., 154320., 158480.,
      162640., 166800., 133540., 136852., 96904.,  99240.,  52476.,  53708.,
      22430.,  22982.,  48564.,  49732.,  78530.,  80378.,  112456., 115048.,
      117640., 120232., 94874.,  96914.,  67764.,  69188.,  36182.,  36926.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1266.,  1356.,  1446.,  1536.,  2062.,  2188.,  2314.,  2440.,  3065.,
      3230.,  3395.,  3560.,  3500.,  3680.,  3860.,  4040.,  3935.,  4130.,
      4325.,  4520.,  4370.,  4580.,  4790.,  5000.,  4054.,  4228.,  4402.,
      4576.,  3471.,  3606.,  3741.,  3876.,  3448.,  3616.,  3784.,  3952.,
      5304.,  5536.,  5768.,  6000.,  7540.,  7840.,  8140.,  8440.,  8320.,
      8640.,  8960.,  9280.,  9100.,  9440.,  9780.,  10120., 9880.,  10240.,
      10600., 10960., 8856.,  9152.,  9448.,  9744.,  7372.,  7600.,  7828.,
      8056.,  7310.,  7580.,  7850.,  8120.,  10890., 11260., 11630., 12000.,
      15075., 15550., 16025., 16500., 16300., 16800., 17300., 17800., 17525.,
      18050., 18575., 19100., 18750., 19300., 19850., 20400., 16450., 16900.,
      17350., 17800., 13445., 13790., 14135., 14480., 12710., 13100., 13490.,
      13880., 18410., 18940., 19470., 20000., 24875., 25550., 26225., 26900.,
      26100., 26800., 27500., 28200., 27325., 28050., 28775., 29500., 28550.,
      29300., 30050., 30800., 24610., 25220., 25830., 26440., 19805., 20270.,
      20735., 21200., 18110., 18620., 19130., 19640., 25930., 26620., 27310.,
      28000., 34675., 35550., 36425., 37300., 35900., 36800., 37700., 38600.,
      37125., 38050., 38975., 39900., 38350., 39300., 40250., 41200., 32770.,
      33540., 34310., 35080., 26165., 26750., 27335., 27920., 22648., 23104.,
      23560., 24016., 31832., 32448., 33064., 33680., 41860., 42640., 43420.,
      44200., 43040., 43840., 44640., 45440., 44220., 45040., 45860., 46680.,
      45400., 46240., 47080., 47920., 38200., 38880., 39560., 40240., 30076.,
      30592., 31108., 31624., 23586., 23964., 24342., 24720., 32830., 33340.,
      33850., 34360., 42785., 43430., 44075., 44720., 43820., 44480., 45140.,
      45800., 44855., 45530., 46205., 46880., 45890., 46580., 47270., 47960.,
      38278., 38836., 39394., 39952., 29895., 30318., 30741., 31164.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   22.,   28.,
      34.,   40.,   50.,   60.,   70.,   80.,   90.,   100.,  110.,  120.,
      109.,  118.,  127.,  136.,  103.,  110.,  117.,  124.,  68.,   72.,
      76.,   80.,   26.,   32.,   38.,   44.,   98.,   112.,  126.,  140.,
      224.,  248.,  272.,  296.,  412.,  448.,  484.,  520.,  556.,  592.,
      628.,  664.,  554.,  584.,  614.,  644.,  466.,  488.,  510.,  532.,
      284.,  296.,  308.,  320.,  155.,  170.,  185.,  200.,  433.,  466.,
      499.,  532.,  846.,  900.,  954.,  1008., 1406., 1484., 1562., 1640.,
      1718., 1796., 1874., 1952., 1575., 1638., 1701., 1764., 1249., 1294.,
      1339., 1384., 728.,  752.,  776.,  800.,  455.,  470.,  485.,  500.,
      1093., 1126., 1159., 1192., 1926., 1980., 2034., 2088., 2966., 3044.,
      3122., 3200., 3278., 3356., 3434., 3512., 2835., 2898., 2961., 3024.,
      2149., 2194., 2239., 2284., 1208., 1232., 1256., 1280., 755.,  770.,
      785.,  800.,  1753., 1786., 1819., 1852., 3006., 3060., 3114., 3168.,
      4526., 4604., 4682., 4760., 4838., 4916., 4994., 5072., 4095., 4158.,
      4221., 4284., 3049., 3094., 3139., 3184., 1688., 1712., 1736., 1760.,
      954.,  968.,  982.,  996.,  2106., 2136., 2166., 2196., 3464., 3512.,
      3560., 3608., 5036., 5104., 5172., 5240., 5308., 5376., 5444., 5512.,
      4346., 4400., 4454., 4508., 3146., 3184., 3222., 3260., 1700., 1720.,
      1740., 1760., 729.,  738.,  747.,  756.,  1575., 1594., 1613., 1632.,
      2542., 2572., 2602., 2632., 3634., 3676., 3718., 3760., 3802., 3844.,
      3886., 3928., 3061., 3094., 3127., 3160., 2183., 2206., 2229., 2252.,
      1164., 1176., 1188., 1200.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9507.,   10209.,  10911.,  11613.,  15608.,  16592.,  17576.,  18560.,
      23335.,  24625.,  25915.,  27205.,  26785.,  28195.,  29605.,  31015.,
      30235.,  31765.,  33295.,  34825.,  33685.,  35335.,  36985.,  38635.,
      31352.,  32720.,  34088.,  35456.,  26913.,  27975.,  29037.,  30099.,
      26420.,  27740.,  29060.,  30380.,  40800.,  42624.,  44448.,  46272.,
      58180.,  60540.,  62900.,  65260.,  64380.,  66900.,  69420.,  71940.,
      70580.,  73260.,  75940.,  78620.,  76780.,  79620.,  82460.,  85300.,
      68960.,  71296.,  73632.,  75968.,  57500.,  59300.,  61100.,  62900.,
      56605.,  58735.,  60865.,  62995.,  84520.,  87440.,  90360.,  93280.,
      117225., 120975., 124725., 128475., 126975., 130925., 134875., 138825.,
      136725., 140875., 145025., 149175., 146475., 150825., 155175., 159525.,
      128680., 132240., 135800., 139360., 105295., 108025., 110755., 113485.,
      99565.,  102655., 105745., 108835., 144360., 148560., 152760., 156960.,
      195225., 200575., 205925., 211275., 204975., 210525., 216075., 221625.,
      214725., 220475., 226225., 231975., 224475., 230425., 236375., 242325.,
      193640., 198480., 203320., 208160., 155935., 159625., 163315., 167005.,
      142525., 146575., 150625., 154675., 204200., 209680., 215160., 220640.,
      273225., 280175., 287125., 294075., 282975., 290125., 297275., 304425.,
      292725., 300075., 307425., 314775., 302475., 310025., 317575., 325125.,
      258600., 264720., 270840., 276960., 206575., 211225., 215875., 220525.,
      178964., 182588., 186212., 189836., 251616., 256512., 261408., 266304.,
      330980., 337180., 343380., 349580., 340380., 346740., 353100., 359460.,
      349780., 356300., 362820., 369340., 359180., 365860., 372540., 379220.,
      302304., 307712., 313120., 318528., 238076., 242180., 246284., 250388.,
      186771., 189777., 192783., 195789., 260024., 264080., 268136., 272192.,
      338935., 344065., 349195., 354325., 347185., 352435., 357685., 362935.,
      355435., 360805., 366175., 371545., 363685., 369175., 374665., 380155.,
      303416., 307856., 312296., 316736., 237009., 240375., 243741., 247107.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   137.,
      179.,   221.,   263.,   328.,   400.,   472.,   544.,   616.,   688.,
      760.,   832.,   779.,   845.,   911.,   977.,   752.,   804.,   856.,
      908.,   503.,   533.,   563.,   593.,   154.,   198.,   242.,   286.,
      656.,   760.,   864.,   968.,   1570.,  1750.,  1930.,  2110.,  2960.,
      3232.,  3504.,  3776.,  4048.,  4320.,  4592.,  4864.,  4102.,  4330.,
      4558.,  4786.,  3488.,  3656.,  3824.,  3992.,  2142.,  2234.,  2326.,
      2418.,  1087.,  1201.,  1315.,  1429.,  3128.,  3380.,  3632.,  3884.,
      6219.,  6633.,  7047.,  7461.,  10456., 11056., 11656., 12256., 12856.,
      13456., 14056., 14656., 11889., 12375., 12861., 13347., 9488.,  9836.,
      10184., 10532., 5557.,  5743.,  5929.,  6115.,  3367.,  3481.,  3595.,
      3709.,  8168.,  8420.,  8672.,  8924.,  14499., 14913., 15327., 15741.,
      22456., 23056., 23656., 24256., 24856., 25456., 26056., 26656., 21609.,
      22095., 22581., 23067., 16448., 16796., 17144., 17492., 9277.,  9463.,
      9649.,  9835.,  5647.,  5761.,  5875.,  5989.,  13208., 13460., 13712.,
      13964., 22779., 23193., 23607., 24021., 34456., 35056., 35656., 36256.,
      36856., 37456., 38056., 38656., 31329., 31815., 32301., 32787., 23408.,
      23756., 24104., 24452., 12997., 13183., 13369., 13555., 7322.,  7430.,
      7538.,  7646.,  16208., 16440., 16672., 16904., 26722., 27094., 27466.,
      27838., 38928., 39456., 39984., 40512., 41040., 41568., 42096., 42624.,
      33670., 34090., 34510., 34930., 24416., 24712., 25008., 25304., 13214.,
      13370., 13526., 13682., 5653.,  5723.,  5793.,  5863.,  12232., 12380.,
      12528., 12676., 19769., 20003., 20237., 20471., 28296., 28624., 28952.,
      29280., 29608., 29936., 30264., 30592., 23867., 24125., 24383., 24641.,
      17040., 17220., 17400., 17580., 9095.,  9189.,  9283.,  9377.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      73590.,   79134.,   84678.,   90222.,   121336.,  129112.,  136888.,
      144664.,  181970.,  192170.,  202370.,  212570.,  209450.,  220610.,
      231770.,  242930.,  236930.,  249050.,  261170.,  273290.,  264410.,
      277490.,  290570.,  303650.,  246520.,  257368.,  268216.,  279064.,
      211902.,  220326.,  228750.,  237174.,  206728.,  217192.,  227656.,
      238120.,  319904.,  334368.,  348832.,  363296.,  456920.,  475640.,
      494360.,  513080.,  506360.,  526360.,  546360.,  566360.,  555800.,
      577080.,  598360.,  619640.,  605240.,  627800.,  650360.,  672920.,
      544160.,  562720.,  581280.,  599840.,  454120.,  468424.,  482728.,
      497032.,  445370.,  462290.,  479210.,  496130.,  665800.,  689000.,
      712200.,  735400.,  924350.,  954150.,  983950.,  1013750., 1002150.,
      1033550., 1064950., 1096350., 1079950., 1112950., 1145950., 1178950.,
      1157750., 1192350., 1226950., 1261550., 1017800., 1046120., 1074440.,
      1102760., 833330.,  855050.,  876770.,  898490.,  788090.,  812690.,
      837290.,  861890.,  1143240., 1176680., 1210120., 1243560., 1546750.,
      1589350., 1631950., 1674550., 1624550., 1668750., 1712950., 1757150.,
      1702350., 1748150., 1793950., 1839750., 1780150., 1827550., 1874950.,
      1922350., 1536200., 1574760., 1613320., 1651880., 1237490., 1266890.,
      1296290., 1325690., 1130810., 1163090., 1195370., 1227650., 1620680.,
      1664360., 1708040., 1751720., 2169150., 2224550., 2279950., 2335350.,
      2246950., 2303950., 2360950., 2417950., 2324750., 2383350., 2441950.,
      2500550., 2402550., 2462750., 2522950., 2583150., 2054600., 2103400.,
      2152200., 2201000., 1641650., 1678730., 1715810., 1752890., 1422856.,
      1451752., 1480648., 1509544., 2000800., 2039840., 2078880., 2117920.,
      2632280., 2681720., 2731160., 2780600., 2707320., 2758040., 2808760.,
      2859480., 2782360., 2834360., 2886360., 2938360., 2857400., 2910680.,
      2963960., 3017240., 2405280., 2448416., 2491552., 2534688., 1894504.,
      1927240., 1959976., 1992712., 1486518., 1510494., 1534470., 1558446.,
      2069752., 2102104., 2134456., 2166808., 2698130., 2739050., 2779970.,
      2820890., 2764010., 2805890., 2847770., 2889650., 2829890., 2872730.,
      2915570., 2958410., 2895770., 2939570., 2983370., 3027170., 2416120.,
      2451544., 2486968., 2522392., 1887486., 1914342., 1941198., 1968054.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      946.,    1258.,   1570.,   1882.,   2344.,   2888.,   3432.,   3976.,
      4520.,   5064.,   5608.,   6152.,   5866.,   6370.,   6874.,   7378.,
      5732.,   6132.,   6532.,   6932.,   3862.,   4094.,   4326.,   4558.,
      1020.,   1356.,   1692.,   2028.,   4744.,   5544.,   6344.,   7144.,
      11684.,  13076.,  14468.,  15860.,  22352.,  24464.,  26576.,  28688.,
      30800.,  32912.,  35024.,  37136.,  31508.,  33284.,  35060.,  36836.,
      26952.,  28264.,  29576.,  30888.,  16620.,  17340.,  18060.,  18780.,
      8090.,   8978.,   9866.,   10754.,  23692.,  25660.,  27628.,  29596.,
      47574.,  50814.,  54054.,  57294.,  80504.,  85208.,  89912.,  94616.,
      99320.,  104024., 108728., 113432., 92286.,  96102.,  99918.,  103734.,
      73900.,  76636.,  79372.,  82108.,  43394.,  44858.,  46322.,  47786.,
      25850.,  26738.,  27626.,  28514.,  63052.,  65020.,  66988.,  68956.,
      112374., 115614., 118854., 122094., 174584., 179288., 183992., 188696.,
      193400., 198104., 202808., 207512., 168606., 172422., 176238., 180054.,
      128620., 131356., 134092., 136828., 72674.,  74138.,  75602.,  77066.,
      43610.,  44498.,  45386.,  46274.,  102412., 104380., 106348., 108316.,
      177174., 180414., 183654., 186894., 268664., 273368., 278072., 282776.,
      287480., 292184., 296888., 301592., 244926., 248742., 252558., 256374.,
      183340., 186076., 188812., 191548., 101954., 103418., 104882., 106346.,
      57340.,  58188.,  59036.,  59884.,  127112., 128936., 130760., 132584.,
      209828., 212756., 215684., 218612., 306000., 310160., 314320., 318480.,
      322640., 326800., 330960., 335120., 264980., 268292., 271604., 274916.,
      192328., 194664., 197000., 199336., 104172., 105404., 106636., 107868.,
      44510.,  45062.,  45614.,  46166.,  96388.,  97556.,  98724.,  99892.,
      155890., 157738., 159586., 161434., 223272., 225864., 228456., 231048.,
      233640., 236232., 238824., 241416., 188458., 190498., 192538., 194578.,
      134628., 136052., 137476., 138900., 71894.,  72638.,  73382.,  74126.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      318.,  510.,  750.,  870.,  816.,   705.,   796.,  1220., 1730.,  1940.,
      1756., 1474., 1610., 2400., 3325.,  3650.,  3230., 2660., 2690.,  3900.,
      5275., 5600., 4850., 3920., 3770.,  5400.,  7225., 7550., 6470.,  5180.,
      4850., 6900., 9175., 9500., 8090.,  6440.,  5632., 7900., 10370., 10680.,
      8980., 7066., 5628., 7830., 10200., 10470., 8736., 6825.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   7.,   10.,  13.,  10.,  9.,   29.,  39.,  49.,  59.,  40.,
      34.,  95.,  116., 137., 158., 100., 86.,  222., 258., 294., 330., 200.,
      166., 402., 438., 474., 510., 300., 220., 503., 536., 569., 602., 340.,
      217., 483., 509., 535., 561., 310., 147., 322., 337., 352., 367., 200.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2283.,  3708.,  5505.,  6435.,  6084.,  5289.,  5888.,  9088.,
      12960., 14600., 13280., 11192., 12115., 18140., 25225., 27775.,
      24660., 20365., 20575., 29900., 40525., 43075., 37380., 30265.,
      29035., 41660., 55825., 58375., 50100., 40165., 37495., 53420.,
      71125., 73675., 62820., 50065., 43880., 61600., 80920., 83360.,
      70144., 55232., 44043., 61308., 79905., 82035., 68484., 53529.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    22.,   42.,   62.,   82.,   67.,   52.,   184.,  256.,  328.,
      400.,  280.,  221.,  646.,  802.,  958.,  1114., 719.,  592.,  1568.,
      1840., 2112., 2384., 1464., 1192., 2928., 3200., 3472., 3744., 2224.,
      1637., 3766., 4018., 4270., 4522., 2567., 1640., 3664., 3864., 4064.,
      4264., 2364., 1121., 2462., 2578., 2694., 2810., 1535.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17238.,  28200.,  42090.,  49410.,  46920.,  40926.,  45208.,  70048.,
      100200., 113160., 103200., 87160.,  93890.,  140920., 196350., 216550.,
      192600., 159290., 160850., 234040., 317550., 337750., 293400., 237770.,
      227810., 327160., 438750., 458950., 394200., 316250., 294770., 420280.,
      559950., 580150., 495000., 394730., 346360., 486432., 639240., 658600.,
      554400., 436696., 348438., 485160., 632490., 649410., 542280., 423966.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   284.,   428.,   572.,   486.,   340.,   1288.,
      1832.,  2376.,  2920.,  2084.,  1570.,  4724.,  5924.,  7124.,
      8324.,  5434.,  4360.,  11728., 13840., 15952., 18064., 11176.,
      9000.,  22288., 24400., 26512., 28624., 17096., 12610., 29108.,
      31076., 33044., 35012., 19930., 12740., 28520., 30088., 31656.,
      33224., 18452., 8750.,  19244., 20156., 21068., 21980., 12022.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      564.,   636.,   918.,   1020.,  1365.,  1500.,  1590.,  1740.,  1506.,
      1632.,  1311.,  1410.,  1460.,  1592.,  2256.,  2440.,  3220.,  3460.,
      3620.,  3880.,  3296.,  3512.,  2780.,  2948.,  3010.,  3220.,  4510.,
      4800.,  6275.,  6650.,  6900.,  7300.,  6130.,  6460.,  5065.,  5320.,
      5080.,  5380.,  7390.,  7800.,  10025., 10550., 10650., 11200., 9250.,
      9700.,  7495.,  7840.,  7150.,  7540.,  10270., 10800., 13775., 14450.,
      14400., 15100., 12370., 12940., 9925.,  10360., 9220.,  9700.,  13150.,
      13800., 17525., 18350., 18150., 19000., 15490., 16180., 12355., 12880.,
      10844., 11264., 15232., 15800., 20020., 20740., 20620., 21360., 17360.,
      17960., 13676., 14132., 10914., 11256., 15198., 15660., 19815., 20400.,
      20340., 20940., 16986., 17472., 13281., 13650.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    11.,   14.,  17.,  20.,  23.,   26.,   18.,
      20.,   14.,   18.,   48.,   58.,   68.,  78.,  88.,  98.,   108.,  118.,
      74.,   80.,   59.,   68.,   169.,  190., 211., 232., 253.,  274.,  295.,
      316.,  188.,  200.,  156.,  172.,  408., 444., 480., 516.,  552.,  588.,
      624.,  660.,  380.,  400.,  316.,  332., 768., 804., 840.,  876.,  912.,
      948.,  984.,  1020., 580.,  600.,  425., 440., 973., 1006., 1039., 1072.,
      1105., 1138., 1171., 1204., 662.,  680., 422., 434., 940.,  966.,  992.,
      1018., 1044., 1070., 1096., 1122., 606., 620., 287., 294.,  629.,  644.,
      659.,  674.,  689.,  704.,  719.,  734., 392., 400.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4143.,   4701.,   6816.,   7608.,   10215.,  11265.,  11985.,  13155.,
      11424.,  12408.,  9993.,   10767.,  10996.,  12028.,  17088.,  18528.,
      24500.,  26380.,  27660.,  29700.,  25280.,  26976.,  21388.,  22708.,
      22985.,  24635.,  34560.,  36840.,  48225.,  51175.,  53175.,  56325.,
      47360.,  49960.,  39215.,  41225.,  39365.,  41735.,  57360.,  60600.,
      77925.,  82075.,  82875.,  87225.,  72080.,  75640.,  58475.,  61205.,
      55745.,  58835.,  80160.,  84360.,  107625., 112975., 112575., 118125.,
      96800.,  101320., 77735.,  81185.,  72125.,  75935.,  102960., 108120.,
      137325., 143875., 142275., 149025., 121520., 127000., 96995.,  101165.,
      85252.,  88588.,  119808., 124320., 157540., 163260., 162300., 168180.,
      136704., 141472., 107740., 111364., 86043.,  88761.,  119856., 123528.,
      156315., 160965., 160485., 165255., 134064., 137928., 104853., 107787.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   48.,   68.,   88.,   108.,  128.,  148.,  168.,
      123.,  137.,  82.,   110.,  312.,  384.,  456.,  528.,  600.,  672.,
      744.,  816.,  526.,  570.,  391.,  457.,  1172., 1328., 1484., 1640.,
      1796., 1952., 2108., 2264., 1369., 1459., 1092., 1212., 2928., 3200.,
      3472., 3744., 4016., 4288., 4560., 4832., 2812., 2964., 2292., 2412.,
      5648., 5920., 6192., 6464., 6736., 7008., 7280., 7552., 4332., 4484.,
      3187., 3301., 7340., 7592., 7844., 8096., 8348., 8600., 8852., 9104.,
      5029., 5167., 3210., 3302., 7176., 7376., 7576., 7776., 7976., 8176.,
      8376., 8576., 4646., 4754., 2201., 2255., 4836., 4952., 5068., 5184.,
      5300., 5416., 5532., 5648., 3023., 3085.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31686.,   36078.,   52440.,   58680.,   78930.,   87210.,   92970.,
      102210.,  88920.,   96696.,   77982.,   84102.,   85256.,   93416.,
      132896.,  144288.,  191000.,  205880.,  216120.,  232280.,  197920.,
      211360.,  167720.,  178184.,  179530.,  192610.,  270440.,  288520.,
      377950.,  401350.,  417350.,  442350.,  372200.,  392840.,  308530.,
      324490.,  309850.,  328690.,  451880.,  477640.,  614350.,  647350.,
      653750.,  688350.,  569000.,  597320.,  461890.,  483610.,  440170.,
      464770.,  633320.,  666760.,  850750.,  893350.,  890150.,  934350.,
      765800.,  801800.,  615250.,  642730.,  570490.,  600850.,  814760.,
      855880.,  1087150., 1139350., 1126550., 1180350., 962600.,  1006280.,
      768610.,  801850.,  676040.,  702632.,  950304.,  986272.,  1249880.,
      1295480., 1287800., 1334680., 1084960., 1122976., 855272.,  884168.,
      683286.,  704958.,  951960.,  981240.,  1241730., 1278810., 1274970.,
      1313010., 1065240., 1096056., 833262.,  856662.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   324.,   468.,   612.,   756.,   900.,   1044.,
      1188.,  902.,   1006.,  540.,   748.,   2216.,  2760.,  3304.,  3848.,
      4392.,  4936.,  5480.,  6024.,  3948.,  4284.,  2810.,  3314.,  8668.,
      9868.,  11068., 12268., 13468., 14668., 15868., 17068., 10418., 11114.,
      8120.,  9048.,  22096., 24208., 26320., 28432., 30544., 32656., 34768.,
      36880., 21592., 22776., 17400., 18328., 43216., 45328., 47440., 49552.,
      51664., 53776., 55888., 58000., 33432., 34616., 24650., 25538., 56956.,
      58924., 60892., 62860., 64828., 66796., 68764., 70732., 39170., 40250.,
      25020., 25740., 56040., 57608., 59176., 60744., 62312., 63880., 65448.,
      67016., 36364., 37212., 17230., 17654., 37908., 38820., 39732., 40644.,
      41556., 42468., 43380., 44292., 23734., 24222.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1056.,  1128.,  1200.,  1272.,  1734.,  1836.,  1938.,  2040.,  2595.,
      2730.,  2865.,  3000.,  3030.,  3180.,  3330.,  3480.,  2886.,  3012.,
      3138.,  3264.,  2523.,  2622.,  2721.,  2820.,  2788.,  2920.,  3052.,
      3184.,  4328.,  4512.,  4696.,  4880.,  6200.,  6440.,  6680.,  6920.,
      6980.,  7240.,  7500.,  7760.,  6376.,  6592.,  6808.,  7024.,  5392.,
      5560.,  5728.,  5896.,  5810.,  6020.,  6230.,  6440.,  8730.,  9020.,
      9310.,  9600.,  12175., 12550., 12925., 13300., 13400., 13800., 14200.,
      14600., 11930., 12260., 12590., 12920., 9875.,  10130., 10385., 10640.,
      9860.,  10160., 10460., 10760., 14370., 14780., 15190., 15600., 19525.,
      20050., 20575., 21100., 20750., 21300., 21850., 22400., 18050., 18500.,
      18950., 19400., 14645., 14990., 15335., 15680., 13910., 14300., 14690.,
      15080., 20010., 20540., 21070., 21600., 26875., 27550., 28225., 28900.,
      28100., 28800., 29500., 30200., 24170., 24740., 25310., 25880., 19415.,
      19850., 20285., 20720., 17960., 18440., 18920., 19400., 25650., 26300.,
      26950., 27600., 34225., 35050., 35875., 36700., 35450., 36300., 37150.,
      38000., 30290., 30980., 31670., 32360., 24185., 24710., 25235., 25760.,
      21268., 21688., 22108., 22528., 29896., 30464., 31032., 31600., 39320.,
      40040., 40760., 41480., 40500., 41240., 41980., 42720., 34120., 34720.,
      35320., 35920., 26896., 27352., 27808., 28264., 21486., 21828., 22170.,
      22512., 29934., 30396., 30858., 31320., 39045., 39630., 40215., 40800.,
      40080., 40680., 41280., 41880., 33486., 33972., 34458., 34944., 26193.,
      26562., 26931., 27300.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   19.,   22.,
      25.,   28.,   31.,   34.,   37.,   40.,   43.,   46.,   49.,   52.,
      34.,   36.,   38.,   40.,   24.,   28.,   32.,   36.,   86.,   96.,
      106.,  116.,  126.,  136.,  146.,  156.,  166.,  176.,  186.,  196.,
      206.,  216.,  226.,  236.,  142.,  148.,  154.,  160.,  109.,  118.,
      127.,  136.,  317.,  338.,  359.,  380.,  401.,  422.,  443.,  464.,
      485.,  506.,  527.,  548.,  569.,  590.,  611.,  632.,  364.,  376.,
      388.,  400.,  296.,  312.,  328.,  344.,  780.,  816.,  852.,  888.,
      924.,  960.,  996.,  1032., 1068., 1104., 1140., 1176., 1212., 1248.,
      1284., 1320., 740.,  760.,  780.,  800.,  616.,  632.,  648.,  664.,
      1500., 1536., 1572., 1608., 1644., 1680., 1716., 1752., 1788., 1824.,
      1860., 1896., 1932., 1968., 2004., 2040., 1140., 1160., 1180., 1200.,
      835.,  850.,  865.,  880.,  1913., 1946., 1979., 2012., 2045., 2078.,
      2111., 2144., 2177., 2210., 2243., 2276., 2309., 2342., 2375., 2408.,
      1306., 1324., 1342., 1360., 832.,  844.,  856.,  868.,  1854., 1880.,
      1906., 1932., 1958., 1984., 2010., 2036., 2062., 2088., 2114., 2140.,
      2166., 2192., 2218., 2244., 1198., 1212., 1226., 1240., 567.,  574.,
      581.,  588.,  1243., 1258., 1273., 1288., 1303., 1318., 1333., 1348.,
      1363., 1378., 1393., 1408., 1423., 1438., 1453., 1468., 776.,  784.,
      792.,  800.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7863.,   8421.,   8979.,   9537.,   13032.,  13824.,  14616.,  15408.,
      19635.,  20685.,  21735.,  22785.,  23085.,  24255.,  25425.,  26595.,
      22104.,  23088.,  24072.,  25056.,  19401.,  20175.,  20949.,  21723.,
      21212.,  22244.,  23276.,  24308.,  33088.,  34528.,  35968.,  37408.,
      47580.,  49460.,  51340.,  53220.,  53780.,  55820.,  57860.,  59900.,
      49280.,  50976.,  52672.,  54368.,  41780.,  43100.,  44420.,  45740.,
      44725.,  46375.,  48025.,  49675.,  67400.,  69680.,  71960.,  74240.,
      94225.,  97175.,  100125., 103075., 103975., 107125., 110275., 113425.,
      92760.,  95360.,  97960.,  100560., 76915.,  78925.,  80935.,  82945.,
      76945.,  79315.,  81685.,  84055.,  112280., 115520., 118760., 122000.,
      152725., 156875., 161025., 165175., 162475., 166825., 171175., 175525.,
      141480., 145040., 148600., 152160., 114895., 117625., 120355., 123085.,
      109165., 112255., 115345., 118435., 157160., 161360., 165560., 169760.,
      211225., 216575., 221925., 227275., 220975., 226525., 232075., 237625.,
      190200., 194720., 199240., 203760., 152875., 156325., 159775., 163225.,
      141385., 145195., 149005., 152815., 202040., 207200., 212360., 217520.,
      269725., 276275., 282825., 289375., 279475., 286225., 292975., 299725.,
      238920., 244400., 249880., 255360., 190855., 195025., 199195., 203365.,
      167996., 171332., 174668., 178004., 236224., 240736., 245248., 249760.,
      310780., 316500., 322220., 327940., 320180., 326060., 331940., 337820.,
      269824., 274592., 279360., 284128., 212756., 216380., 220004., 223628.,
      170043., 172761., 175479., 178197., 236952., 240624., 244296., 247968.,
      309135., 313785., 318435., 323085., 317385., 322155., 326925., 331695.,
      265224., 269088., 272952., 276816., 207501., 210435., 213369., 216303.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   120.,
      140.,   160.,   180.,   200.,   220.,   240.,   260.,   280.,   300.,
      320.,   340.,   235.,   249.,   263.,   277.,   142.,   170.,   198.,
      226.,   568.,   640.,   712.,   784.,   856.,   928.,   1000.,  1072.,
      1144.,  1216.,  1288.,  1360.,  1432.,  1504.,  1576.,  1648.,  1018.,
      1062.,  1106.,  1150.,  731.,   797.,   863.,   929.,   2224.,  2380.,
      2536.,  2692.,  2848.,  3004.,  3160.,  3316.,  3472.,  3628.,  3784.,
      3940.,  4096.,  4252.,  4408.,  4564.,  2669.,  2759.,  2849.,  2939.,
      2092.,  2212.,  2332.,  2452.,  5648.,  5920.,  6192.,  6464.,  6736.,
      7008.,  7280.,  7552.,  7824.,  8096.,  8368.,  8640.,  8912.,  9184.,
      9456.,  9728.,  5508.,  5660.,  5812.,  5964.,  4492.,  4612.,  4732.,
      4852.,  11088., 11360., 11632., 11904., 12176., 12448., 12720., 12992.,
      13264., 13536., 13808., 14080., 14352., 14624., 14896., 15168., 8548.,
      8700.,  8852.,  9004.,  6287.,  6401.,  6515.,  6629.,  14488., 14740.,
      14992., 15244., 15496., 15748., 16000., 16252., 16504., 16756., 17008.,
      17260., 17512., 17764., 18016., 18268., 9953.,  10091., 10229., 10367.,
      6350.,  6442.,  6534.,  6626.,  14200., 14400., 14600., 14800., 15000.,
      15200., 15400., 15600., 15800., 16000., 16200., 16400., 16600., 16800.,
      17000., 17200., 9210.,  9318.,  9426.,  9534.,  4361.,  4415.,  4469.,
      4523.,  9584.,  9700.,  9816.,  9932.,  10048., 10164., 10280., 10396.,
      10512., 10628., 10744., 10860., 10976., 11092., 11208., 11324., 5999.,
      6061.,  6123.,  6185.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      60582.,   64974.,   69366.,   73758.,   100920.,  107160.,  113400.,
      119640.,  152610.,  160890.,  169170.,  177450.,  180090.,  189330.,
      198570.,  207810.,  172920.,  180696.,  188472.,  196248.,  152094.,
      158214.,  164334.,  170454.,  165352.,  173512.,  181672.,  189832.,
      258592.,  269984.,  281376.,  292768.,  372600.,  387480.,  402360.,
      417240.,  422040.,  438200.,  454360.,  470520.,  387360.,  400800.,
      414240.,  427680.,  328840.,  339304.,  349768.,  360232.,  350810.,
      363890.,  376970.,  390050.,  529480.,  547560.,  565640.,  583720.,
      741150.,  764550.,  787950.,  811350.,  818950.,  843950.,  868950.,
      893950.,  731400.,  752040.,  772680.,  793320.,  607010.,  622970.,
      638930.,  654890.,  607850.,  626690.,  645530.,  664370.,  887560.,
      913320.,  939080.,  964840.,  1207950., 1240950., 1273950., 1306950.,
      1285750., 1320350., 1354950., 1389550., 1120200., 1148520., 1176840.,
      1205160., 910130.,  931850.,  953570.,  975290.,  864890.,  889490.,
      914090.,  938690.,  1245640., 1279080., 1312520., 1345960., 1674750.,
      1717350., 1759950., 1802550., 1752550., 1796750., 1840950., 1885150.,
      1509000., 1545000., 1581000., 1617000., 1213250., 1240730., 1268210.,
      1295690., 1121930., 1152290., 1182650., 1213010., 1603720., 1644840.,
      1685960., 1727080., 2141550., 2193750., 2245950., 2298150., 2219350.,
      2273150., 2326950., 2380750., 1897800., 1941480., 1985160., 2028840.,
      1516370., 1549610., 1582850., 1616090., 1335400., 1361992., 1388584.,
      1415176., 1878048., 1914016., 1949984., 1985952., 2471160., 2516760.,
      2562360., 2607960., 2546200., 2593080., 2639960., 2686840., 2146080.,
      2184096., 2222112., 2260128., 1692424., 1721320., 1750216., 1779112.,
      1352982., 1374654., 1396326., 1417998., 1885560., 1914840., 1944120.,
      1973400., 2460210., 2497290., 2534370., 2571450., 2526090., 2564130.,
      2602170., 2640210., 2111160., 2141976., 2172792., 2203608., 1651854.,
      1675254., 1698654., 1722054.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      836.,    980.,    1124.,   1268.,   1412.,   1556.,   1700.,   1844.,
      1988.,   2132.,   2276.,   2420.,   1734.,   1838.,   1942.,   2046.,
      940.,    1148.,   1356.,   1564.,   4072.,   4616.,   5160.,   5704.,
      6248.,   6792.,   7336.,   7880.,   8424.,   8968.,   9512.,   10056.,
      10600.,  11144.,  11688.,  12232.,  7676.,   8012.,   8348.,   8684.,
      5290.,   5794.,   6298.,   6802.,   16556.,  17756.,  18956.,  20156.,
      21356.,  22556.,  23756.,  24956.,  26156.,  27356.,  28556.,  29756.,
      30956.,  32156.,  33356.,  34556.,  20386.,  21082.,  21778.,  22474.,
      15640.,  16568.,  17496.,  18424.,  42832.,  44944.,  47056.,  49168.,
      51280.,  53392.,  55504.,  57616.,  59728.,  61840.,  63952.,  66064.,
      68176.,  70288.,  72400.,  74512.,  42424.,  43608.,  44792.,  45976.,
      34200.,  35128.,  36056.,  36984.,  85072.,  87184.,  89296.,  91408.,
      93520.,  95632.,  97744.,  99856.,  101968., 104080., 106192., 108304.,
      110416., 112528., 114640., 116752., 66104.,  67288.,  68472.,  69656.,
      48730.,  49618.,  50506.,  51394.,  112652., 114620., 116588., 118556.,
      120524., 122492., 124460., 126428., 128396., 130364., 132332., 134300.,
      136268., 138236., 140204., 142172., 77650.,  78730.,  79810.,  80890.,
      49580.,  50300.,  51020.,  51740.,  111080., 112648., 114216., 115784.,
      117352., 118920., 120488., 122056., 123624., 125192., 126760., 128328.,
      129896., 131464., 133032., 134600., 72188.,  73036.,  73884.,  74732.,
      34190.,  34614.,  35038.,  35462.,  75236.,  76148.,  77060.,  77972.,
      78884.,  79796.,  80708.,  81620.,  82532.,  83444.,  84356.,  85268.,
      86180.,  87092.,  88004.,  88916.,  47158.,  47646.,  48134.,  48622.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      351.,  560.,  820.,  940.,   1060.,  980.,   837.,   892.,
      1360., 1920., 2130., 2340.,  2096.,  1744.,  1820.,  2700.,
      3725., 4050., 4375., 3840.,  3140.,  3080.,  4450.,  6000.,
      6325., 6650., 5730., 4610.,  4340.,  6200.,  8275.,  8600.,
      8925., 7620., 6080., 5600.,  7950.,  10550., 10875., 11200.,
      9510., 7550., 6514., 9120.,  11950., 12260., 12570., 10544.,
      8278., 6516., 9050., 11770., 12040., 12310., 10250., 7992.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   10.,   16.,  22.,   22.,   15.,   10.,   32.,   68.,
      89.,  110., 96.,   60.,  42.,   114.,  219.,  264.,  309.,  252.,
      150., 112., 280.,  508., 586.,  664.,  520.,  300.,  222.,  520.,
      898., 976., 1054., 800., 450.,  306.,  681.,  1128., 1200., 1272.,
      933., 510., 307.,  668., 1085., 1142., 1199., 864.,  465.,  210.,
      451., 724., 757.,  790., 563.,  300.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2529.,  4084.,  6035.,  6965.,  7895.,  7348.,  6309.,  6620.,
      10160., 14420., 16060., 17700., 15920., 13292., 13735., 20460.,
      28325., 30875., 33425., 29420., 24115., 23605., 34180., 46175.,
      48725., 51275., 44260., 35665., 33475., 47900., 64025., 66575.,
      69125., 59100., 47215., 43345., 61620., 81875., 84425., 86975.,
      73940., 58765., 50804., 71184., 93340., 95780., 98220., 82448.,
      64772., 51039., 70924., 92285., 94415., 96545., 80428., 62739.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    22.,   59.,   101.,  143.,  150.,  105.,  58.,   204.,  454.,
      610.,  766.,  684.,  434.,  279.,  786.,  1545., 1887., 2229., 1842.,
      1107., 788.,  2008., 3692., 4292., 4892., 3864., 2244., 1628., 3848.,
      6692., 7292., 7892., 6024., 3404., 2313., 5166., 8583., 9141., 9699.,
      7134., 3909., 2350., 5124., 8338., 8782., 9226., 6660., 3590., 1619.,
      3482., 5597., 5855., 6113., 4362., 2327.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19134.,  31112.,  46210.,  53530.,  60850.,  56840.,  48942.,  50920.,
      78432.,  111640., 124600., 137560., 124000., 103720., 106610., 159160.,
      220750., 240950., 261150., 230200., 188930., 184730., 267800., 362150.,
      382350., 402550., 347800., 280490., 262850., 376440., 503550., 523750.,
      543950., 465400., 372050., 340970., 485080., 644950., 665150., 685350.,
      583000., 463610., 401224., 562400., 737720., 757080., 776440., 652000.,
      512392., 403974., 561512., 730810., 747730., 764650., 637160., 497142.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   394.,   706.,   1018.,  1100.,  782.,   380.,
      1432.,  3284.,  4484.,  5684.,  5144.,  3292.,  2010.,  5796.,
      11550., 14214., 16878., 14052., 8490.,  5880.,  15152., 28072.,
      32776., 37480., 29744., 17336., 12440., 29552., 51592., 56296.,
      61000., 46704., 26456., 17970., 40212., 66918., 71310., 75702.,
      55764., 30594., 18380., 40120., 65348., 68852., 72356., 52280.,
      28204., 12710., 27356., 44002., 46042., 48082., 34332., 18326.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      621.,   702.,   1006.,  1120.,  1490.,  1640.,  1715.,  1880.,  1940.,
      2120.,  1810.,  1960.,  1557.,  1674.,  1634.,  1784.,  2512.,  2720.,
      3570.,  3840.,  3970.,  4260.,  4370.,  4680.,  3936.,  4192.,  3290.,
      3488.,  3400.,  3640.,  5070.,  5400.,  7025.,  7450.,  7650.,  8100.,
      8275.,  8750.,  7290.,  7680.,  5980.,  6280.,  5815.,  6160.,  8430.,
      8900.,  11400., 12000., 12025., 12650., 12650., 13300., 10930., 11460.,
      8815.,  9220.,  8230.,  8680.,  11790., 12400., 15775., 16550., 16400.,
      17200., 17025., 17850., 14570., 15240., 11650., 12160., 10645., 11200.,
      15150., 15900., 20150., 21100., 20775., 21750., 21400., 22400., 18210.,
      19020., 14485., 15100., 12542., 13028., 17584., 18240., 23070., 23900.,
      23670., 24520., 24270., 25140., 20384., 21088., 16022., 16556., 12636.,
      13032., 17566., 18100., 22865., 23540., 23390., 24080., 23915., 24620.,
      19930., 20500., 15552., 15984.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    14.,   20.,   26.,   32.,   38.,   44.,
      39.,   44.,   27.,   30.,   15.,   20.,   52.,   64.,   115.,  136.,
      157.,  178.,  199.,  220.,  176.,  192.,  111.,  120.,  72.,   84.,
      201.,  228.,  393.,  438.,  483.,  528.,  573.,  618.,  471.,  504.,
      282.,  300.,  202.,  224.,  512.,  560.,  938.,  1016., 1094., 1172.,
      1250., 1328., 984.,  1040., 570.,  600.,  422.,  444.,  992.,  1040.,
      1718., 1796., 1874., 1952., 2030., 2108., 1544., 1600., 870.,  900.,
      591.,  612.,  1317., 1362., 2184., 2256., 2328., 2400., 2472., 2544.,
      1815., 1866., 993.,  1020., 597.,  614.,  1300., 1336., 2113., 2170.,
      2227., 2284., 2341., 2398., 1688., 1728., 909.,  930.,  410.,  420.,
      881.,  902.,  1415., 1448., 1481., 1514., 1547., 1580., 1103., 1126.,
      588.,  600.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4581.,   5211.,   7496.,   8384.,   11185.,  12355.,  12955.,  14245.,
      14725.,  16135.,  13808.,  14984.,  11925.,  12843.,  12352.,  13528.,
      19088.,  20720.,  27240.,  29360.,  30400.,  32680.,  33560.,  36000.,
      30320.,  32336.,  25408.,  26968.,  26045.,  27935.,  38960.,  41560.,
      54125.,  57475.,  59075.,  62625.,  64025.,  67775.,  56520.,  59600.,
      46445.,  48815.,  45155.,  47885.,  65560.,  69280.,  88775.,  93525.,
      93725.,  98675.,  98675.,  103825., 85360.,  89560.,  68915.,  72125.,
      64265.,  67835.,  92160.,  97000.,  123425., 129575., 128375., 134725.,
      133325., 139875., 114200., 119520., 91385.,  95435.,  83375.,  87785.,
      118760., 124720., 158075., 165625., 163025., 170775., 167975., 175925.,
      143040., 149480., 113855., 118745., 98704.,  102568., 138448., 143664.,
      181720., 188320., 186480., 193240., 191240., 198160., 160688., 166288.,
      126352., 130600., 99711.,  102861., 138656., 142904., 180535., 185905.,
      184705., 190195., 188875., 194485., 157448., 161984., 122895., 126333.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    85.,    127.,   169.,   211.,   253.,
      295.,   272.,   308.,   193.,   215.,   88.,    124.,   340.,   428.,
      788.,   944.,   1100.,  1256.,  1412.,  1568.,  1276.,  1396.,  816.,
      884.,   489.,   579.,   1416.,  1620.,  2829.,  3171.,  3513.,  3855.,
      4197.,  4539.,  3492.,  3744.,  2109.,  2247.,  1448.,  1616.,  3736.,
      4104.,  6928.,  7528.,  8128.,  8728.,  9328.,  9928.,  7400.,  7832.,
      4312.,  4544.,  3128.,  3296.,  7416.,  7784.,  12928., 13528., 14128.,
      14728., 15328., 15928., 11720., 12152., 6632.,  6864.,  4503.,  4665.,
      10068., 10416., 16743., 17301., 17859., 18417., 18975., 19533., 13968.,
      14364., 7659.,  7869.,  4600.,  4732.,  10036., 10316., 16340., 16784.,
      17228., 17672., 18116., 18560., 13084., 13396., 7056.,  7220.,  3179.,
      3257.,  6840.,  7004.,  10999., 11257., 11515., 11773., 12031., 12289.,
      8588.,  8768.,  4583.,  4677.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      35118.,   40086.,   57784.,   64792.,   86570.,   95810.,   100610.,
      110810.,  114650.,  125810.,  107800.,  117112.,  93294.,   100566.,
      95960.,   105272.,  148704.,  161632.,  212680.,  229480.,  237800.,
      255880.,  262920.,  282280.,  237920.,  253920.,  199640.,  212024.,
      203770.,  218770.,  305320.,  325960.,  424750.,  451350.,  464150.,
      492350.,  503550.,  533350.,  445000.,  469480.,  366010.,  384850.,
      355810.,  377530.,  517000.,  546600.,  700550.,  738350.,  739950.,
      779350.,  779350.,  820350.,  674600.,  708040.,  544930.,  570490.,
      507850.,  536290.,  728680.,  767240.,  976350.,  1025350., 1015750.,
      1066350., 1055150., 1107350., 904200.,  946600.,  723850.,  756130.,
      659890.,  695050.,  940360.,  987880.,  1252150., 1312350., 1291550.,
      1353350., 1330950., 1394350., 1133800., 1185160., 902770.,  941770.,
      783128.,  813944.,  1098720., 1140320., 1442440., 1495080., 1480360.,
      1534280., 1518280., 1573480., 1276000., 1320672., 1003544., 1037432.,
      792198.,  817326.,  1101784., 1135672., 1434770., 1477610., 1468010.,
      1511810., 1501250., 1546010., 1251640., 1287832., 977094.,  1004526.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,    324.,    578.,    890.,    1202.,   1514.,
      1826.,   2138.,   2020.,   2292.,   1454.,   1622.,   580.,    852.,
      2424.,   3096.,   5788.,   6988.,   8188.,   9388.,   10588.,  11788.,
      9688.,   10616.,  6244.,   6772.,   3570.,   4266.,   10572.,  12156.,
      21390.,  24054.,  26718.,  29382.,  32046.,  34710.,  26844.,  28812.,
      16290.,  17370.,  10920.,  12232.,  28464.,  31344.,  53144.,  57848.,
      62552.,  67256.,  71960.,  76664.,  57328.,  60720.,  33512.,  35336.,
      24040.,  25352.,  57264.,  60144.,  100184., 104888., 109592., 114296.,
      119000., 123704., 91248.,  94640.,  51752.,  53576.,  35130.,  36402.,
      78684.,  81420.,  131046., 135438., 139830., 144222., 148614., 153006.,
      109548., 112668., 60138.,  61794.,  36100.,  37140.,  78840.,  81048.,
      128476., 131980., 135484., 138988., 142492., 145996., 103000., 105464.,
      55588.,  56884.,  25030.,  25646.,  53892.,  55188.,  86714.,  88754.,
      90794.,  92834.,  94874.,  96914.,  67764.,  69188.,  36182.,  36926.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1161.,  1242.,  1323.,  1404.,  1898.,  2012.,  2126.,  2240.,  2830.,
      2980.,  3130.,  3280.,  3265.,  3430.,  3595.,  3760.,  3700.,  3880.,
      4060.,  4240.,  3470.,  3620.,  3770.,  3920.,  2997.,  3114.,  3231.,
      3348.,  3118.,  3268.,  3418.,  3568.,  4816.,  5024.,  5232.,  5440.,
      6870.,  7140.,  7410.,  7680.,  7650.,  7940.,  8230.,  8520.,  8430.,
      8740.,  9050.,  9360.,  7616.,  7872.,  8128.,  8384.,  6382.,  6580.,
      6778.,  6976.,  6560.,  6800.,  7040.,  7280.,  9810.,  10140., 10470.,
      10800., 13625., 14050., 14475., 14900., 14850., 15300., 15750., 16200.,
      16075., 16550., 17025., 17500., 14190., 14580., 14970., 15360., 11660.,
      11960., 12260., 12560., 11285., 11630., 11975., 12320., 16390., 16860.,
      17330., 17800., 22200., 22800., 23400., 24000., 23425., 24050., 24675.,
      25300., 24650., 25300., 25950., 26600., 21330., 21860., 22390., 22920.,
      17225., 17630., 18035., 18440., 16010., 16460., 16910., 17360., 22970.,
      23580., 24190., 24800., 30775., 31550., 32325., 33100., 32000., 32800.,
      33600., 34400., 33225., 34050., 34875., 35700., 28470., 29140., 29810.,
      30480., 22790., 23300., 23810., 24320., 20735., 21290., 21845., 22400.,
      29550., 30300., 31050., 31800., 39350., 40300., 41250., 42200., 40575.,
      41550., 42525., 43500., 41800., 42800., 43800., 44800., 35610., 36420.,
      37230., 38040., 28355., 28970., 29585., 30200., 24598., 25084., 25570.,
      26056., 34512., 35168., 35824., 36480., 45310., 46140., 46970., 47800.,
      46490., 47340., 48190., 49040., 47670., 48540., 49410., 50280., 40064.,
      40768., 41472., 42176., 31510., 32044., 32578., 33112., 24876., 25272.,
      25668., 26064., 34598., 35132., 35666., 36200., 45055., 45730., 46405.,
      47080., 46090., 46780., 47470., 48160., 47125., 47830., 48535., 49240.,
      39290., 39860., 40430., 41000., 30672., 31104., 31536., 31968.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   22.,   28.,
      34.,   40.,   46.,   52.,   58.,   64.,   70.,   76.,   82.,   88.,
      73.,   78.,   83.,   88.,   51.,   54.,   57.,   60.,   25.,   30.,
      35.,   40.,   92.,   104.,  116.,  128.,  209.,  230.,  251.,  272.,
      293.,  314.,  335.,  356.,  377.,  398.,  419.,  440.,  336.,  352.,
      368.,  384.,  213.,  222.,  231.,  240.,  132.,  144.,  156.,  168.,
      375.,  402.,  429.,  456.,  741.,  786.,  831.,  876.,  921.,  966.,
      1011., 1056., 1101., 1146., 1191., 1236., 909.,  942.,  975.,  1008.,
      546.,  564.,  582.,  600.,  382.,  404.,  426.,  448.,  976.,  1024.,
      1072., 1120., 1798., 1876., 1954., 2032., 2110., 2188., 2266., 2344.,
      2422., 2500., 2578., 2656., 1912., 1968., 2024., 2080., 1110., 1140.,
      1170., 1200., 822.,  844.,  866.,  888.,  1936., 1984., 2032., 2080.,
      3358., 3436., 3514., 3592., 3670., 3748., 3826., 3904., 3982., 4060.,
      4138., 4216., 3032., 3088., 3144., 3200., 1710., 1740., 1770., 1800.,
      1161., 1182., 1203., 1224., 2589., 2634., 2679., 2724., 4296., 4368.,
      4440., 4512., 4584., 4656., 4728., 4800., 4872., 4944., 5016., 5088.,
      3579., 3630., 3681., 3732., 1959., 1986., 2013., 2040., 1177., 1194.,
      1211., 1228., 2564., 2600., 2636., 2672., 4169., 4226., 4283., 4340.,
      4397., 4454., 4511., 4568., 4625., 4682., 4739., 4796., 3336., 3376.,
      3416., 3456., 1797., 1818., 1839., 1860., 810.,  820.,  830.,  840.,
      1741., 1762., 1783., 1804., 2797., 2830., 2863., 2896., 2929., 2962.,
      2995., 3028., 3061., 3094., 3127., 3160., 2183., 2206., 2229., 2252.,
      1164., 1176., 1188., 1200.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8685.,   9315.,   9945.,   10575.,  14320.,  15208.,  16096.,  16984.,
      21485.,  22655.,  23825.,  24995.,  24935.,  26225.,  27515.,  28805.,
      28385.,  29795.,  31205.,  32615.,  26728.,  27904.,  29080.,  30256.,
      23157.,  24075.,  24993.,  25911.,  23816.,  24992.,  26168.,  27344.,
      36944.,  38576.,  40208.,  41840.,  52880.,  55000.,  57120.,  59240.,
      59080.,  61360.,  63640.,  65920.,  65280.,  67720.,  70160.,  72600.,
      59120.,  61136.,  63152.,  65168.,  49640.,  51200.,  52760.,  54320.,
      50665.,  52555.,  54445.,  56335.,  75960.,  78560.,  81160.,  83760.,
      105725., 109075., 112425., 115775., 115475., 119025., 122575., 126125.,
      125225., 128975., 132725., 136475., 110720., 113800., 116880., 119960.,
      91105.,  93475.,  95845.,  98215.,  88255.,  90985.,  93715.,  96445.,
      128320., 132040., 135760., 139480., 173975., 178725., 183475., 188225.,
      183725., 188675., 193625., 198575., 193475., 198625., 203775., 208925.,
      167560., 171760., 175960., 180160., 135415., 138625., 141835., 145045.,
      125845., 129415., 132985., 136555., 180680., 185520., 190360., 195200.,
      242225., 248375., 254525., 260675., 251975., 258325., 264675., 271025.,
      261725., 268275., 274825., 281375., 224400., 229720., 235040., 240360.,
      179725., 183775., 187825., 191875., 163435., 167845., 172255., 176665.,
      233040., 239000., 244960., 250920., 310475., 318025., 325575., 333125.,
      320225., 327975., 335725., 343475., 329975., 337925., 345875., 353825.,
      281240., 287680., 294120., 300560., 224035., 228925., 233815., 238705.,
      194504., 198368., 202232., 206096., 272976., 278192., 283408., 288624.,
      358480., 365080., 371680., 378280., 367880., 374640., 381400., 388160.,
      377280., 384200., 391120., 398040., 317168., 322768., 328368., 333968.,
      249512., 253760., 258008., 262256., 197055., 200205., 203355., 206505.,
      274120., 278368., 282616., 286864., 357035., 362405., 367775., 373145.,
      365285., 370775., 376265., 381755., 373535., 379145., 384755., 390365.,
      311488., 316024., 320560., 325096., 243207., 246645., 250083., 253521.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   137.,
      179.,   221.,   263.,   305.,   347.,   389.,   431.,   473.,   515.,
      557.,   599.,   516.,   552.,   588.,   624.,   369.,   391.,   413.,
      435.,   148.,   184.,   220.,   256.,   612.,   700.,   788.,   876.,
      1456.,  1612.,  1768.,  1924.,  2080.,  2236.,  2392.,  2548.,  2704.,
      2860.,  3016.,  3172.,  2460.,  2580.,  2700.,  2820.,  1580.,  1648.,
      1716.,  1784.,  909.,   999.,   1089.,  1179.,  2676.,  2880.,  3084.,
      3288.,  5397.,  5739.,  6081.,  6423.,  6765.,  7107.,  7449.,  7791.,
      8133.,  8475.,  8817.,  9159.,  6792.,  7044.,  7296.,  7548.,  4113.,
      4251.,  4389.,  4527.,  2768.,  2936.,  3104.,  3272.,  7192.,  7560.,
      7928.,  8296.,  13400., 14000., 14600., 15200., 15800., 16400., 17000.,
      17600., 18200., 18800., 19400., 20000., 14472., 14904., 15336., 15768.,
      8448.,  8680.,  8912.,  9144.,  6128.,  6296.,  6464.,  6632.,  14552.,
      14920., 15288., 15656., 25400., 26000., 26600., 27200., 27800., 28400.,
      29000., 29600., 30200., 30800., 31400., 32000., 23112., 23544., 23976.,
      24408., 13088., 13320., 13552., 13784., 8883.,  9045.,  9207.,  9369.,
      19872., 20220., 20568., 20916., 33063., 33621., 34179., 34737., 35295.,
      35853., 36411., 36969., 37527., 38085., 38643., 39201., 27636., 28032.,
      28428., 28824., 15159., 15369., 15579., 15789., 9100.,  9232.,  9364.,
      9496.,  19860., 20140., 20420., 20700., 32344., 32788., 33232., 33676.,
      34120., 34564., 35008., 35452., 35896., 36340., 36784., 37228., 25932.,
      26244., 26556., 26868., 13988., 14152., 14316., 14480., 6299.,  6377.,
      6455.,  6533.,  13556., 13720., 13884., 14048., 21803., 22061., 22319.,
      22577., 22835., 23093., 23351., 23609., 23867., 24125., 24383., 24641.,
      17040., 17220., 17400., 17580., 9095.,  9189.,  9283.,  9377.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67086.,   72054.,   77022.,   81990.,   111128.,  118136.,  125144.,
      132152.,  167290.,  176530.,  185770.,  195010.,  194770.,  204970.,
      215170.,  225370.,  222250.,  233410.,  244570.,  255730.,  209720.,
      219032.,  228344.,  237656.,  181998.,  189270.,  196542.,  203814.,
      186040.,  195352.,  204664.,  213976.,  289248.,  302176.,  315104.,
      328032.,  414760.,  431560.,  448360.,  465160.,  464200.,  482280.,
      500360.,  518440.,  513640.,  533000.,  552360.,  571720.,  465760.,
      481760.,  497760.,  513760.,  391480.,  403864.,  416248.,  428632.,
      398090.,  413090.,  428090.,  443090.,  597640.,  618280.,  638920.,
      659560.,  832750.,  859350.,  885950.,  912550.,  910550.,  938750.,
      966950.,  995150.,  988350.,  1018150., 1047950., 1077750., 874600.,
      899080.,  923560.,  948040.,  720170.,  739010.,  757850.,  776690.,
      697970.,  719690.,  741410.,  763130.,  1015400., 1045000., 1074600.,
      1104200., 1377350., 1415150., 1452950., 1490750., 1455150., 1494550.,
      1533950., 1573350., 1532950., 1573950., 1614950., 1655950., 1328200.,
      1361640., 1395080., 1428520., 1073810., 1099370., 1124930., 1150490.,
      997850.,  1026290., 1054730., 1083170., 1433160., 1471720., 1510280.,
      1548840., 1921950., 1970950., 2019950., 2068950., 1999750., 2050350.,
      2100950., 2151550., 2077550., 2129750., 2181950., 2234150., 1781800.,
      1824200., 1866600., 1909000., 1427450., 1459730., 1492010., 1524290.,
      1297730., 1332890., 1368050., 1403210., 1850920., 1898440., 1945960.,
      1993480., 2466550., 2526750., 2586950., 2647150., 2544350., 2606150.,
      2667950., 2729750., 2622150., 2685550., 2748950., 2812350., 2235400.,
      2286760., 2338120., 2389480., 1781090., 1820090., 1859090., 1898090.,
      1546936., 1577752., 1608568., 1639384., 2171360., 2212960., 2254560.,
      2296160., 2851880., 2904520., 2957160., 3009800., 2926920., 2980840.,
      3034760., 3088680., 3001960., 3057160., 3112360., 3167560., 2524000.,
      2568672., 2613344., 2658016., 1985848., 2019736., 2053624., 2087512.,
      1568646., 1593774., 1618902., 1644030., 2182328., 2216216., 2250104.,
      2283992., 2842690., 2885530., 2928370., 2971210., 2908570., 2952370.,
      2996170., 3039970., 2974450., 3019210., 3063970., 3108730., 2480600.,
      2516792., 2552984., 2589176., 1936998., 1964430., 1991862., 2019294.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      946.,    1258.,   1570.,   1882.,   2194.,   2506.,   2818.,   3130.,
      3442.,   3754.,   4066.,   4378.,   3860.,   4132.,   4404.,   4676.,
      2798.,   2966.,   3134.,   3302.,   980.,    1252.,   1524.,   1796.,
      4408.,   5080.,   5752.,   6424.,   10796.,  11996.,  13196.,  14396.,
      15596.,  16796.,  17996.,  19196.,  20396.,  21596.,  22796.,  23996.,
      18776.,  19704.,  20632.,  21560.,  12148.,  12676.,  13204.,  13732.,
      6690.,   7386.,   8082.,   8778.,   20124.,  21708.,  23292.,  24876.,
      41070.,  43734.,  46398.,  49062.,  51726.,  54390.,  57054.,  59718.,
      62382.,  65046.,  67710.,  70374.,  52428.,  54396.,  56364.,  58332.,
      31890.,  32970.,  34050.,  35130.,  21000.,  22312.,  23624.,  24936.,
      55088.,  57968.,  60848.,  63728.,  103288., 107992., 112696., 117400.,
      122104., 126808., 131512., 136216., 140920., 145624., 150328., 155032.,
      112496., 115888., 119280., 122672., 65864.,  67688.,  69512.,  71336.,
      47240.,  48552.,  49864.,  51176.,  112688., 115568., 118448., 121328.,
      197368., 202072., 206776., 211480., 216184., 220888., 225592., 230296.,
      235000., 239704., 244408., 249112., 180336., 183728., 187120., 190512.,
      102344., 104168., 105992., 107816., 69450.,  70722.,  71994.,  73266.,
      155628., 158364., 161100., 163836., 259302., 263694., 268086., 272478.,
      276870., 281262., 285654., 290046., 294438., 298830., 303222., 307614.,
      217116., 220236., 223356., 226476., 119226., 120882., 122538., 124194.,
      71540.,  72580.,  73620.,  74660.,  156280., 158488., 160696., 162904.,
      254732., 258236., 261740., 265244., 268748., 272252., 275756., 279260.,
      282764., 286268., 289772., 293276., 204440., 206904., 209368., 211832.,
      110356., 111652., 112948., 114244., 49670.,  50286.,  50902.,  51518.,
      106964., 108260., 109556., 110852., 172138., 174178., 176218., 178258.,
      180298., 182338., 184378., 186418., 188458., 190498., 192538., 194578.,
      134628., 136052., 137476., 138900., 71894.,  72638.,  73382.,  74126.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      384.,  610.,   890.,   1010.,  1130.,  1250.,  1144.,  969.,
      988.,  1500.,  2110.,  2320.,  2530.,  2740.,  2436.,  2014.,
      2030., 3000.,  4125.,  4450.,  4775.,  5100.,  4450.,  3620.,
      3470., 5000.,  6725.,  7050.,  7375.,  7700.,  6610.,  5300.,
      4910., 7000.,  9325.,  9650.,  9975.,  10300., 8770.,  6980.,
      6350., 9000.,  11925., 12250., 12575., 12900., 10930., 8660.,
      7396., 10340., 13530., 13840., 14150., 14460., 12108., 9490.,
      7404., 10270., 13340., 13610., 13880., 14150., 11764., 9159.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    10.,   20.,   30.,   34.,   31.,   20.,   11.,   35.,
      74.,   130.,  166.,  161.,  133.,  80.,   50.,   133.,  252.,  410.,
      488.,  441.,  346.,  200.,  138.,  338.,  604.,  940.,  1076., 934.,
      710.,  400.,  278.,  638.,  1084., 1620., 1756., 1474., 1090., 600.,
      392.,  859.,  1404., 2030., 2156., 1755., 1264., 680.,  397.,  853.,
      1370., 1950., 2050., 1643., 1167., 620.,  273.,  580.,  922.,  1300.,
      1358., 1078., 759.,  400.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2775.,  4460.,  6565.,   7495.,   8425.,   9355.,   8612.,  7329.,
      7352.,  11232., 15880.,  17520.,  19160.,  20800.,  18560., 15392.,
      15355., 22780., 31425.,  33975.,  36525.,  39075.,  34180., 27865.,
      26635., 38460., 51825.,  54375.,  56925.,  59475.,  51140., 41065.,
      37915., 54140., 72225.,  74775.,  77325.,  79875.,  68100., 54265.,
      49195., 69820., 92625.,  95175.,  97725.,  100275., 85060., 67465.,
      57728., 80768., 105760., 108200., 110640., 113080., 94752., 74312.,
      58035., 80540., 104665., 106795., 108925., 111055., 92372., 71949.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    22.,   59.,    124.,   196.,   233.,   218.,  143.,
      64.,   224.,  496.,   896.,   1168.,  1156.,  968.,  588.,
      337.,  926.,  1791.,  2956.,  3556.,  3249.,  2570., 1495.,
      984.,  2448., 4424.,  6944.,  8000.,  6992.,  5344., 3024.,
      2064., 4768., 8144.,  12224., 13280., 11192., 8304., 4584.,
      2989., 6566., 10755., 15580., 16564., 13509., 9746., 5251.,
      3060., 6584., 10588., 15088., 15872., 12736., 9056., 4816.,
      2117., 4502., 7163.,  10108., 10564., 8393.,  5914., 3119.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21030.,  34024.,  50330.,  57650.,  64970.,  72290.,  66760.,  56958.,
      56632.,  86816.,  123080., 136040., 149000., 161960., 144800., 120280.,
      119330., 177400., 245150., 265350., 285550., 305750., 267800., 218570.,
      208610., 301560., 406750., 426950., 447150., 467350., 402200., 323210.,
      297890., 425720., 568350., 588550., 608750., 628950., 536600., 427850.,
      387170., 549880., 729950., 750150., 770350., 790550., 671000., 532490.,
      456088., 638368., 836200., 855560., 874920., 894280., 749600., 588088.,
      459510., 637864., 829130., 846050., 862970., 879890., 732040., 570318.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   394.,   856.,    1400.,   1714.,   1628.,  1078.,
      420.,   1576.,  3596.,  6608.,   8720.,   8732.,   7368.,  4500.,
      2450.,  6868.,  13446., 22376.,  27080.,  24894.,  19780., 11546.,
      7400.,  18576., 33784., 53280.,  61600.,  54040.,  41424., 23496.,
      15880., 36816., 63064., 94880.,  103200., 87160.,  64784., 35816.,
      23330., 51316., 84150., 122024., 129800., 105966., 76516., 41258.,
      24020., 51720., 83228., 118672., 124880., 100268., 71336., 37956.,
      16670., 35468., 56458., 79704.,  83320.,  66226.,  46684., 24630.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      678.,   768.,   1094.,  1220.,  1615.,  1780.,  1840.,  2020.,  2065.,
      2260.,  2290.,  2500.,  2114.,  2288.,  1803.,  1938.,  1808.,  1976.,
      2768.,  3000.,  3920.,  4220.,  4320.,  4640.,  4720.,  5060.,  5120.,
      5480.,  4576.,  4872.,  3800.,  4028.,  3790.,  4060.,  5630.,  6000.,
      7775.,  8250.,  8400.,  8900.,  9025.,  9550.,  9650.,  10200., 8450.,
      8900.,  6895.,  7240.,  6550.,  6940.,  9470.,  10000., 12775., 13450.,
      13400., 14100., 14025., 14750., 14650., 15400., 12610., 13220., 10135.,
      10600., 9310.,  9820.,  13310., 14000., 17775., 18650., 18400., 19300.,
      19025., 19950., 19650., 20600., 16770., 17540., 13375., 13960., 12070.,
      12700., 17150., 18000., 22775., 23850., 23400., 24500., 24025., 25150.,
      24650., 25800., 20930., 21860., 16615., 17320., 14240., 14792., 19936.,
      20680., 26120., 27060., 26720., 27680., 27320., 28300., 27920., 28920.,
      23408., 24216., 18368., 18980., 14358., 14808., 19934., 20540., 25915.,
      26680., 26440., 27220., 26965., 27760., 27490., 28300., 22874., 23528.,
      17823., 18318.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    14.,   20.,   30.,   40.,   50.,   60.,
      59.,   68.,   55.,   62.,   36.,   40.,   16.,   22.,   56.,   70.,
      124.,  148.,  224.,  260.,  296.,  332.,  292.,  322.,  244.,  266.,
      148.,  160.,  85.,   100.,  233.,  266.,  450.,  504.,  742.,  820.,
      898.,  976.,  819.,  882.,  647.,  692.,  376.,  400.,  248.,  276.,
      616.,  676.,  1112., 1208., 1744., 1880., 2016., 2152., 1760., 1868.,
      1344., 1420., 760.,  800.,  528.,  556.,  1216., 1276., 2072., 2168.,
      3104., 3240., 3376., 3512., 2840., 2948., 2104., 2180., 1160., 1200.,
      757.,  784.,  1661., 1718., 2718., 2808., 3934., 4060., 4186., 4312.,
      3411., 3510., 2459., 2528., 1324., 1360., 772.,  794.,  1660., 1706.,
      2668., 2740., 3800., 3900., 4000., 4100., 3208., 3286., 2280., 2334.,
      1212., 1240., 533.,  546.,  1133., 1160., 1802., 1844., 2542., 2600.,
      2658., 2716., 2111., 2156., 1487., 1518., 784.,  800.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5019.,   5721.,   8176.,   9160.,   12155.,  13445.,  13925.,  15335.,
      15695.,  17225.,  17465.,  19115.,  16192.,  17560.,  13857.,  14919.,
      13708.,  15028.,  21088.,  22912.,  29980.,  32340.,  33140.,  35660.,
      36300.,  38980.,  39460.,  42300.,  35360.,  37696.,  29428.,  31228.,
      29105.,  31235.,  43360.,  46280.,  60025.,  63775.,  64975.,  68925.,
      69925.,  74075.,  74875.,  79225.,  65680.,  69240.,  53675.,  56405.,
      50945.,  54035.,  73760.,  77960.,  99625.,  104975., 104575., 110125.,
      109525., 115275., 114475., 120425., 98640.,  103480., 79355.,  83045.,
      72785.,  76835.,  104160., 109640., 139225., 146175., 144175., 151325.,
      149125., 156475., 154075., 161625., 131600., 137720., 105035., 109685.,
      94625.,  99635.,  134560., 141320., 178825., 187375., 183775., 192525.,
      188725., 197675., 193675., 202825., 164560., 171960., 130715., 136325.,
      112156., 116548., 157088., 163008., 205900., 213380., 210660., 218300.,
      215420., 223220., 220180., 228140., 184672., 191104., 144964., 149836.,
      113379., 116961., 157456., 162280., 204755., 210845., 208925., 215135.,
      213095., 219425., 217265., 223715., 180832., 186040., 140937., 144879.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    85.,    127.,   192.,   264.,   336.,
      408.,   415.,   481.,   396.,   448.,   263.,   293.,   94.,    138.,
      368.,   472.,   854.,   1034.,  1584.,  1856.,  2128.,  2400.,  2138.,
      2366.,  1808.,  1976.,  1106.,  1198.,  587.,   701.,   1660.,  1912.,
      3267.,  3681.,  5456.,  6056.,  6656.,  7256.,  6129.,  6615.,  4876.,
      5224.,  2849.,  3035.,  1804.,  2020.,  4544.,  5008.,  8284.,  9028.,
      13088., 14144., 15200., 16256., 13348., 14188., 10240., 10832., 5812.,
      6124.,  3964.,  4180.,  9184.,  9648.,  15724., 16468., 23648., 24704.,
      25760., 26816., 21748., 22588., 16160., 16752., 8932.,  9244.,  5819.,
      6029.,  12796., 13240., 20979., 21681., 30416., 31400., 32384., 33368.,
      26433., 27207., 19084., 19624., 10289., 10571., 5990.,  6162.,  12896.,
      13256., 20750., 21314., 29584., 30368., 31152., 31936., 25010., 25622.,
      17792., 18216., 9466.,  9686.,  4157.,  4259.,  8844.,  9056.,  14077.,
      14407., 19872., 20328., 20784., 21240., 16519., 16873., 11644., 11888.,
      6143.,  6269.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38550.,   44094.,   63128.,   70904.,   94210.,   104410.,  108250.,
      119410.,  122290.,  134410.,  136330.,  149410.,  126680.,  137528.,
      108606.,  117030.,  106664.,  117128.,  164512.,  178976.,  234360.,
      253080.,  259480.,  279480.,  284600.,  305880.,  309720.,  332280.,
      277920.,  296480.,  231560.,  245864.,  228010.,  244930.,  340200.,
      363400.,  471550.,  501350.,  510950.,  542350.,  550350.,  583350.,
      589750.,  624350.,  517800.,  546120.,  423490.,  445210.,  401770.,
      426370.,  582120.,  615560.,  786750.,  829350.,  826150.,  870350.,
      865550.,  911350.,  904950.,  952350.,  780200.,  818760.,  627970.,
      657370.,  575530.,  607810.,  824040.,  867720.,  1101950., 1157350.,
      1141350., 1198350., 1180750., 1239350., 1220150., 1280350., 1042600.,
      1091400., 832450.,  869530.,  749290.,  789250.,  1065960., 1119880.,
      1417150., 1485350., 1456550., 1526350., 1495950., 1567350., 1535350.,
      1608350., 1305000., 1364040., 1036930., 1081690., 890216.,  925256.,
      1247136., 1294368., 1635000., 1694680., 1672920., 1733880., 1710840.,
      1773080., 1748760., 1812280., 1467040., 1518368., 1151816., 1190696.,
      901110.,  929694.,  1251608., 1290104., 1627810., 1676410., 1661050.,
      1710610., 1694290., 1744810., 1727530., 1779010., 1438040., 1479608.,
      1120926., 1152390.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,    324.,    578.,    890.,    1352.,   1896.,
      2440.,   2984.,   3098.,   3602.,   2996.,   3396.,   2006.,   2238.,
      620.,    956.,    2632.,   3432.,   6292.,   7684.,   11856.,  13968.,
      16080.,  18192.,  16324.,  18100.,  13896.,  15208.,  8540.,   9260.,
      4330.,   5218.,   12476.,  14444.,  24822.,  28062.,  41752.,  46456.,
      51160.,  55864.,  47358.,  51174.,  37820.,  40556.,  22162.,  23626.,
      13720.,  15416.,  34832.,  38480.,  63848.,  69704.,  101280., 109600.,
      117920., 126240., 103880., 110504., 79888.,  84560.,  45432.,  47896.,
      30680.,  32376.,  71312.,  74960.,  122408., 128264., 184480., 192800.,
      201120., 209440., 170120., 176744., 126608., 131280., 70072.,  72536.,
      45610.,  47266.,  100412., 103916., 164790., 170334., 239128., 246904.,
      254680., 262456., 208062., 214182., 150332., 154604., 81106.,  83338.,
      47180.,  48540.,  101640., 104488., 163636., 168100., 233424., 239632.,
      245840., 252048., 197476., 202324., 140552., 143912., 74812.,  76556.,
      32830.,  33638.,  69876.,  71556.,  111266., 113882., 157128., 160744.,
      164360., 167976., 130682., 133490., 92148.,  94084.,  48630.,  49630.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1266.,  1356.,  1446.,  1536.,  2062.,  2188.,  2314.,  2440.,  3065.,
      3230.,  3395.,  3560.,  3500.,  3680.,  3860.,  4040.,  3935.,  4130.,
      4325.,  4520.,  4370.,  4580.,  4790.,  5000.,  4054.,  4228.,  4402.,
      4576.,  3471.,  3606.,  3741.,  3876.,  3448.,  3616.,  3784.,  3952.,
      5304.,  5536.,  5768.,  6000.,  7540.,  7840.,  8140.,  8440.,  8320.,
      8640.,  8960.,  9280.,  9100.,  9440.,  9780.,  10120., 9880.,  10240.,
      10600., 10960., 8856.,  9152.,  9448.,  9744.,  7372.,  7600.,  7828.,
      8056.,  7310.,  7580.,  7850.,  8120.,  10890., 11260., 11630., 12000.,
      15075., 15550., 16025., 16500., 16300., 16800., 17300., 17800., 17525.,
      18050., 18575., 19100., 18750., 19300., 19850., 20400., 16450., 16900.,
      17350., 17800., 13445., 13790., 14135., 14480., 12710., 13100., 13490.,
      13880., 18410., 18940., 19470., 20000., 24875., 25550., 26225., 26900.,
      26100., 26800., 27500., 28200., 27325., 28050., 28775., 29500., 28550.,
      29300., 30050., 30800., 24610., 25220., 25830., 26440., 19805., 20270.,
      20735., 21200., 18110., 18620., 19130., 19640., 25930., 26620., 27310.,
      28000., 34675., 35550., 36425., 37300., 35900., 36800., 37700., 38600.,
      37125., 38050., 38975., 39900., 38350., 39300., 40250., 41200., 32770.,
      33540., 34310., 35080., 26165., 26750., 27335., 27920., 23510., 24140.,
      24770., 25400., 33450., 34300., 35150., 36000., 44475., 45550., 46625.,
      47700., 45700., 46800., 47900., 49000., 46925., 48050., 49175., 50300.,
      48150., 49300., 50450., 51600., 40930., 41860., 42790., 43720., 32525.,
      33230., 33935., 34640., 27928., 28480., 29032., 29584., 39128., 39872.,
      40616., 41360., 51300., 52240., 53180., 54120., 52480., 53440., 54400.,
      55360., 53660., 54640., 55620., 56600., 54840., 55840., 56840., 57840.,
      46008., 46816., 47624., 48432., 36124., 36736., 37348., 37960., 28266.,
      28716., 29166., 29616., 39262., 39868., 40474., 41080., 51065., 51830.,
      52595., 53360., 52100., 52880., 53660., 54440., 53135., 53930., 54725.,
      55520., 54170., 54980., 55790., 56600., 45094., 45748., 46402., 47056.,
      35151., 35646., 36141., 36636.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   22.,   28.,
      34.,   40.,   50.,   60.,   70.,   80.,   90.,   100.,  110.,  120.,
      109.,  118.,  127.,  136.,  103.,  110.,  117.,  124.,  68.,   72.,
      76.,   80.,   26.,   32.,   38.,   44.,   98.,   112.,  126.,  140.,
      224.,  248.,  272.,  296.,  412.,  448.,  484.,  520.,  556.,  592.,
      628.,  664.,  554.,  584.,  614.,  644.,  466.,  488.,  510.,  532.,
      284.,  296.,  308.,  320.,  155.,  170.,  185.,  200.,  433.,  466.,
      499.,  532.,  846.,  900.,  954.,  1008., 1406., 1484., 1562., 1640.,
      1718., 1796., 1874., 1952., 1575., 1638., 1701., 1764., 1249., 1294.,
      1339., 1384., 728.,  752.,  776.,  800.,  468.,  496.,  524.,  552.,
      1172., 1232., 1292., 1352., 2128., 2224., 2320., 2416., 3352., 3488.,
      3624., 3760., 3896., 4032., 4168., 4304., 3412., 3520., 3628., 3736.,
      2612., 2688., 2764., 2840., 1480., 1520., 1560., 1600., 1028., 1056.,
      1084., 1112., 2372., 2432., 2492., 2552., 4048., 4144., 4240., 4336.,
      6072., 6208., 6344., 6480., 6616., 6752., 6888., 7024., 5572., 5680.,
      5788., 5896., 4132., 4208., 4284., 4360., 2280., 2320., 2360., 2400.,
      1487., 1514., 1541., 1568., 3265., 3322., 3379., 3436., 5346., 5436.,
      5526., 5616., 7742., 7868., 7994., 8120., 8246., 8372., 8498., 8624.,
      6723., 6822., 6921., 7020., 4849., 4918., 4987., 5056., 2612., 2648.,
      2684., 2720., 1522., 1544., 1566., 1588., 3274., 3320., 3366., 3412.,
      5264., 5336., 5408., 5480., 7500., 7600., 7700., 7800., 7900., 8000.,
      8100., 8200., 6338., 6416., 6494., 6572., 4506., 4560., 4614., 4668.,
      2396., 2424., 2452., 2480., 1053., 1066., 1079., 1092., 2239., 2266.,
      2293., 2320., 3562., 3604., 3646., 3688., 5026., 5084., 5142., 5200.,
      5258., 5316., 5374., 5432., 4177., 4222., 4267., 4312., 2943., 2974.,
      3005., 3036., 1552., 1568., 1584., 1600.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9507.,   10209.,  10911.,  11613.,  15608.,  16592.,  17576.,  18560.,
      23335.,  24625.,  25915.,  27205.,  26785.,  28195.,  29605.,  31015.,
      30235.,  31765.,  33295.,  34825.,  33685.,  35335.,  36985.,  38635.,
      31352.,  32720.,  34088.,  35456.,  26913.,  27975.,  29037.,  30099.,
      26420.,  27740.,  29060.,  30380.,  40800.,  42624.,  44448.,  46272.,
      58180.,  60540.,  62900.,  65260.,  64380.,  66900.,  69420.,  71940.,
      70580.,  73260.,  75940.,  78620.,  76780.,  79620.,  82460.,  85300.,
      68960.,  71296.,  73632.,  75968.,  57500.,  59300.,  61100.,  62900.,
      56605.,  58735.,  60865.,  62995.,  84520.,  87440.,  90360.,  93280.,
      117225., 120975., 124725., 128475., 126975., 130925., 134875., 138825.,
      136725., 140875., 145025., 149175., 146475., 150825., 155175., 159525.,
      128680., 132240., 135800., 139360., 105295., 108025., 110755., 113485.,
      99565.,  102655., 105745., 108835., 144360., 148560., 152760., 156960.,
      195225., 200575., 205925., 211275., 204975., 210525., 216075., 221625.,
      214725., 220475., 226225., 231975., 224475., 230425., 236375., 242325.,
      193640., 198480., 203320., 208160., 155935., 159625., 163315., 167005.,
      142525., 146575., 150625., 154675., 204200., 209680., 215160., 220640.,
      273225., 280175., 287125., 294075., 282975., 290125., 297275., 304425.,
      292725., 300075., 307425., 314775., 302475., 310025., 317575., 325125.,
      258600., 264720., 270840., 276960., 206575., 211225., 215875., 220525.,
      185485., 190495., 195505., 200515., 264040., 270800., 277560., 284320.,
      351225., 359775., 368325., 376875., 360975., 369725., 378475., 387225.,
      370725., 379675., 388625., 397575., 380475., 389625., 398775., 407925.,
      323560., 330960., 338360., 345760., 257215., 262825., 268435., 274045.,
      221012., 225404., 229796., 234188., 309728., 315648., 321568., 327488.,
      406180., 413660., 421140., 428620., 415580., 423220., 430860., 438500.,
      424980., 432780., 440580., 448380., 434380., 442340., 450300., 458260.,
      364512., 370944., 377376., 383808., 286268., 291140., 296012., 300884.,
      224067., 227649., 231231., 234813., 311288., 316112., 320936., 325760.,
      404935., 411025., 417115., 423205., 413185., 419395., 425605., 431815.,
      421435., 427765., 434095., 440425., 429685., 436135., 442585., 449035.,
      357752., 362960., 368168., 373376., 278913., 282855., 286797., 290739.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   137.,
      179.,   221.,   263.,   328.,   400.,   472.,   544.,   616.,   688.,
      760.,   832.,   779.,   845.,   911.,   977.,   752.,   804.,   856.,
      908.,   503.,   533.,   563.,   593.,   154.,   198.,   242.,   286.,
      656.,   760.,   864.,   968.,   1570.,  1750.,  1930.,  2110.,  2960.,
      3232.,  3504.,  3776.,  4048.,  4320.,  4592.,  4864.,  4102.,  4330.,
      4558.,  4786.,  3488.,  3656.,  3824.,  3992.,  2142.,  2234.,  2326.,
      2418.,  1087.,  1201.,  1315.,  1429.,  3128.,  3380.,  3632.,  3884.,
      6219.,  6633.,  7047.,  7461.,  10456., 11056., 11656., 12256., 12856.,
      13456., 14056., 14656., 11889., 12375., 12861., 13347., 9488.,  9836.,
      10184., 10532., 5557.,  5743.,  5929.,  6115.,  3444.,  3660.,  3876.,
      4092.,  8736.,  9200.,  9664.,  10128., 16004., 16748., 17492., 18236.,
      25376., 26432., 27488., 28544., 29600., 30656., 31712., 32768., 26060.,
      26900., 27740., 28580., 20032., 20624., 21216., 21808., 11388., 11700.,
      12012., 12324., 7764.,  7980.,  8196.,  8412.,  18016., 18480., 18944.,
      19408., 30884., 31628., 32372., 33116., 46496., 47552., 48608., 49664.,
      50720., 51776., 52832., 53888., 42860., 43700., 44540., 45380., 31872.,
      32464., 33056., 33648., 17628., 17940., 18252., 18564., 11479., 11689.,
      11899., 12109., 25256., 25700., 26144., 26588., 41427., 42129., 42831.,
      43533., 60088., 61072., 62056., 63040., 64024., 65008., 65992., 66976.,
      52281., 53055., 53829., 54603., 37760., 38300., 38840., 39380., 20365.,
      20647., 20929., 21211., 11850., 12022., 12194., 12366., 25520., 25880.,
      26240., 26600., 41074., 41638., 42202., 42766., 58576., 59360., 60144.,
      60928., 61712., 62496., 63280., 64064., 49558., 50170., 50782., 51394.,
      35264., 35688., 36112., 36536., 18766., 18986., 19206., 19426., 8237.,
      8339.,  8441.,  8543.,  17528., 17740., 17952., 18164., 27905., 28235.,
      28565., 28895., 39400., 39856., 40312., 40768., 41224., 41680., 42136.,
      42592., 32771., 33125., 33479., 33833., 23104., 23348., 23592., 23836.,
      12191., 12317., 12443., 12569.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      73590.,   79134.,   84678.,   90222.,   121336.,  129112.,  136888.,
      144664.,  181970.,  192170.,  202370.,  212570.,  209450.,  220610.,
      231770.,  242930.,  236930.,  249050.,  261170.,  273290.,  264410.,
      277490.,  290570.,  303650.,  246520.,  257368.,  268216.,  279064.,
      211902.,  220326.,  228750.,  237174.,  206728.,  217192.,  227656.,
      238120.,  319904.,  334368.,  348832.,  363296.,  456920.,  475640.,
      494360.,  513080.,  506360.,  526360.,  546360.,  566360.,  555800.,
      577080.,  598360.,  619640.,  605240.,  627800.,  650360.,  672920.,
      544160.,  562720.,  581280.,  599840.,  454120.,  468424.,  482728.,
      497032.,  445370.,  462290.,  479210.,  496130.,  665800.,  689000.,
      712200.,  735400.,  924350.,  954150.,  983950.,  1013750., 1002150.,
      1033550., 1064950., 1096350., 1079950., 1112950., 1145950., 1178950.,
      1157750., 1192350., 1226950., 1261550., 1017800., 1046120., 1074440.,
      1102760., 833330.,  855050.,  876770.,  898490.,  788090.,  812690.,
      837290.,  861890.,  1143240., 1176680., 1210120., 1243560., 1546750.,
      1589350., 1631950., 1674550., 1624550., 1668750., 1712950., 1757150.,
      1702350., 1748150., 1793950., 1839750., 1780150., 1827550., 1874950.,
      1922350., 1536200., 1574760., 1613320., 1651880., 1237490., 1266890.,
      1296290., 1325690., 1130810., 1163090., 1195370., 1227650., 1620680.,
      1664360., 1708040., 1751720., 2169150., 2224550., 2279950., 2335350.,
      2246950., 2303950., 2360950., 2417950., 2324750., 2383350., 2441950.,
      2500550., 2402550., 2462750., 2522950., 2583150., 2054600., 2103400.,
      2152200., 2201000., 1641650., 1678730., 1715810., 1752890., 1473530.,
      1513490., 1553450., 1593410., 2098120., 2152040., 2205960., 2259880.,
      2791550., 2859750., 2927950., 2996150., 2869350., 2939150., 3008950.,
      3078750., 2947150., 3018550., 3089950., 3161350., 3024950., 3097950.,
      3170950., 3243950., 2573000., 2632040., 2691080., 2750120., 2045810.,
      2090570., 2135330., 2180090., 1758472., 1793512., 1828552., 1863592.,
      2464672., 2511904., 2559136., 2606368., 3232600., 3292280., 3351960.,
      3411640., 3307640., 3368600., 3429560., 3490520., 3382680., 3444920.,
      3507160., 3569400., 3457720., 3521240., 3584760., 3648280., 2901920.,
      2953248., 3004576., 3055904., 2279272., 2318152., 2357032., 2395912.,
      1784310., 1812894., 1841478., 1870062., 2479096., 2517592., 2556088.,
      2594584., 3225170., 3273770., 3322370., 3370970., 3291050., 3340610.,
      3390170., 3439730., 3356930., 3407450., 3457970., 3508490., 3422810.,
      3474290., 3525770., 3577250., 2850040., 2891608., 2933176., 2974744.,
      2222142., 2253606., 2285070., 2316534.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      946.,    1258.,   1570.,   1882.,   2344.,   2888.,   3432.,   3976.,
      4520.,   5064.,   5608.,   6152.,   5866.,   6370.,   6874.,   7378.,
      5732.,   6132.,   6532.,   6932.,   3862.,   4094.,   4326.,   4558.,
      1020.,   1356.,   1692.,   2028.,   4744.,   5544.,   6344.,   7144.,
      11684.,  13076.,  14468.,  15860.,  22352.,  24464.,  26576.,  28688.,
      30800.,  32912.,  35024.,  37136.,  31508.,  33284.,  35060.,  36836.,
      26952.,  28264.,  29576.,  30888.,  16620.,  17340.,  18060.,  18780.,
      8090.,   8978.,   9866.,   10754.,  23692.,  25660.,  27628.,  29596.,
      47574.,  50814.,  54054.,  57294.,  80504.,  85208.,  89912.,  94616.,
      99320.,  104024., 108728., 113432., 92286.,  96102.,  99918.,  103734.,
      73900.,  76636.,  79372.,  82108.,  43394.,  44858.,  46322.,  47786.,
      26360.,  28056.,  29752.,  31448.,  67344.,  70992.,  74640.,  78288.,
      123976., 129832., 135688., 141544., 197280., 205600., 213920., 222240.,
      230560., 238880., 247200., 255520., 203560., 210184., 216808., 223432.,
      156816., 161488., 166160., 170832., 89304.,  91768.,  94232.,  96696.,
      60280.,  61976.,  63672.,  65368.,  140304., 143952., 147600., 151248.,
      241096., 246952., 252808., 258664., 363680., 372000., 380320., 388640.,
      396960., 405280., 413600., 421920., 336040., 342664., 349288., 355912.,
      250256., 254928., 259600., 264272., 138584., 141048., 143512., 145976.,
      90170.,  91826.,  93482.,  95138.,  198604., 202108., 205612., 209116.,
      326070., 331614., 337158., 342702., 473336., 481112., 488888., 496664.,
      504440., 512216., 519992., 527768., 412254., 418374., 424494., 430614.,
      297964., 302236., 306508., 310780., 160802., 163034., 165266., 167498.,
      93500.,  94860.,  96220.,  97580.,  201480., 204328., 207176., 210024.,
      324452., 328916., 333380., 337844., 462928., 469136., 475344., 481552.,
      487760., 493968., 500176., 506384., 391892., 396740., 401588., 406436.,
      278984., 282344., 285704., 289064., 148524., 150268., 152012., 153756.,
      65150.,  65958.,  66766.,  67574.,  138692., 140372., 142052., 143732.,
      220882., 223498., 226114., 228730., 311976., 315592., 319208., 322824.,
      326440., 330056., 333672., 337288., 259594., 262402., 265210., 268018.,
      183076., 185012., 186948., 188884., 96630.,  97630.,  98630.,  99630.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      318.,   510.,   750.,   870.,   816.,   705.,   796.,   1220.,  1730.,
      1940.,  1756.,  1474.,  1610.,  2400.,  3325.,  3650.,  3230.,  2660.,
      2690.,  3900.,  5275.,  5600.,  4850.,  3920.,  3544.,  5020.,  6650.,
      6960.,  5908.,  4690.,  3792.,  5310.,  6960.,  7230.,  6072.,  4773.,
      2586.,  3750.,  5070.,  5190.,  4488.,  3621.,  4900.,  6980.,  9290.,
      9500.,  8092.,  6442.,  8090.,  11400., 15025., 15350., 12950., 10220.,
      9170.,  12900., 16975., 17300., 14570., 11480., 9808.,  13660., 17810.,
      18120., 15124., 11818., 9300.,  12870., 16680., 16950., 14064., 10929.,
      4854.,  6990.,  9390.,  9510.,  8160.,  6537.,  9004.,  12740., 16850.,
      17060., 14428., 11410., 14570., 20400., 26725., 27050., 22670., 17780.,
      15650., 21900., 28675., 29000., 24290., 19040., 16072., 22300., 28970.,
      29280., 24340., 18946., 14808., 20430., 26400., 26670., 22056., 17085.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   7.,   10.,  13.,  10.,  9.,   29.,  39.,  49.,  59.,  40.,
      29.,  79.,  89.,  99.,  109., 70.,  49.,  129., 139., 149., 159., 100.,
      69.,  179., 189., 199., 209., 130., 63.,  150., 157., 164., 171., 100.,
      5.,   16.,  27.,  38.,  49.,  30.,  37.,  93.,  119., 145., 171., 100.,
      97.,  223., 249., 275., 301., 170., 157., 353., 379., 405., 431., 240.,
      217., 483., 509., 535., 561., 310., 147., 322., 337., 352., 367., 200.,
      9.,   28.,  47.,  66.,  85.,  50.,  65.,  157., 199., 241., 283., 160.,
      165., 367., 409., 451., 493., 270., 265., 577., 619., 661., 703., 380.,
      365., 787., 829., 871., 913., 490., 231., 494., 517., 540., 563., 300.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2283.,   3708.,   5505.,   6435.,   6084.,   5289.,   5888.,   9088.,
      12960.,  14600.,  13280.,  11192.,  12115.,  18140.,  25225.,  27775.,
      24660.,  20365.,  20575.,  29900.,  40525.,  43075.,  37380.,  30265.,
      27464.,  38944.,  51640.,  54080.,  45952.,  36512.,  29571.,  41436.,
      54345.,  56475.,  47460.,  37329.,  19779.,  28764.,  38985.,  39915.,
      34596.,  27969.,  37856.,  54016.,  72000.,  73640.,  62816.,  50072.,
      62875.,  88700.,  117025., 119575., 100980., 79765.,  71335.,  100460.,
      132325., 134875., 113700., 89665.,  76712.,  106912., 139480., 141920.,
      118528., 92672.,  72987.,  101052., 131025., 133155., 110532., 85929.,
      37275.,  53820.,  72465.,  73395.,  63108.,  50649.,  69824.,  98944.,
      131040., 132680., 112352., 88952.,  113635., 159260., 208825., 211375.,
      177300., 139165., 122095., 171020., 224125., 226675., 190020., 149065.,
      125960., 174880., 227320., 229760., 191104., 148832., 116403., 160668.,
      207705., 209835., 173604., 134529.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    22.,   42.,   62.,   82.,   67.,   52.,   184.,  256.,  328.,
      400.,  280.,  192.,  544.,  616.,  688.,  760.,  500.,  332.,  904.,
      976.,  1048., 1120., 720.,  472.,  1264., 1336., 1408., 1480., 940.,
      457.,  1102., 1154., 1206., 1258., 743.,  29.,   102.,  186.,  270.,
      354.,  219.,  260.,  664.,  864.,  1064., 1264., 744.,  720.,  1664.,
      1864., 2064., 2264., 1284., 1180., 2664., 2864., 3064., 3264., 1824.,
      1640., 3664., 3864., 4064., 4264., 2364., 1121., 2462., 2578., 2694.,
      2810., 1535., 53.,   182.,  330.,  478.,  626.,  371.,  468.,  1144.,
      1472., 1800., 2128., 1208., 1248., 2784., 3112., 3440., 3768., 2068.,
      2028., 4424., 4752., 5080., 5408., 2928., 2808., 6064., 6392., 6720.,
      7048., 3788., 1785., 3822., 4002., 4182., 4362., 2327.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17238.,   28200.,   42090.,   49410.,   46920.,   40926.,   45208.,
      70048.,   100200.,  113160.,  103200.,  87160.,   93890.,   140920.,
      196350.,  216550.,  192600.,  159290.,  160850.,  234040.,  317550.,
      337750.,  293400.,  237770.,  216184.,  306720.,  406920.,  426280.,
      362400.,  288088.,  233526.,  327336.,  429450.,  446370.,  375240.,
      295230.,  154614.,  225192.,  305610.,  312930.,  271560.,  219774.,
      297496.,  424864.,  566760.,  579720.,  494880.,  394744.,  495650.,
      699640.,  923550.,  943750.,  797400.,  630170.,  562610.,  792760.,
      1044750., 1064950., 898200.,  708650.,  606712.,  845856.,  1103880.,
      1123240., 938400.,  733912.,  578262.,  800808.,  1038570., 1055490.,
      876360.,  681438.,  291990.,  422184.,  569130.,  576450.,  496200.,
      398622.,  549784.,  779680.,  1033320., 1046280., 886560.,  702328.,
      897410.,  1258360., 1650750., 1670950., 1402200., 1101050., 964370.,
      1351480., 1771950., 1792150., 1503000., 1179530., 997240.,  1384992.,
      1800840., 1820200., 1514400., 1179736., 922998.,  1274280., 1647690.,
      1664610., 1377480., 1067646.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   284.,   428.,   572.,   486.,   340.,   1288.,  1832.,
      2376.,  2920.,  2084.,  1380.,  4008.,  4552.,  5096.,  5640.,  3764.,
      2420.,  6728.,  7272.,  7816.,  8360.,  5444.,  3460.,  9448.,  9992.,
      10536., 11080., 7124.,  3470.,  8428.,  8828.,  9228.,  9628.,  5718.,
      190.,   716.,   1372.,  2028.,  2684.,  1670.,  1940.,  5000.,  6568.,
      8136.,  9704.,  5732.,  5540.,  12840., 14408., 15976., 17544., 9972.,
      9140.,  20680., 22248., 23816., 25384., 14212., 12740., 28520., 30088.,
      31656., 33224., 18452., 8750.,  19244., 20156., 21068., 21980., 12022.,
      350.,   1292.,  2460.,  3628.,  4796.,  2854.,  3540.,  8712.,  11304.,
      13896., 16488., 9380.,  9700.,  21672., 24264., 26856., 29448., 16180.,
      15860., 34632., 37224., 39816., 42408., 22980., 22020., 47592., 50184.,
      52776., 55368., 29780., 14030., 30060., 31484., 32908., 34332., 18326.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      564.,   636.,   918.,   1020.,  1365.,  1500.,  1590.,  1740.,  1506.,
      1632.,  1311.,  1410.,  1460.,  1592.,  2256.,  2440.,  3220.,  3460.,
      3620.,  3880.,  3296.,  3512.,  2780.,  2948.,  3010.,  3220.,  4510.,
      4800.,  6275.,  6650.,  6900.,  7300.,  6130.,  6460.,  5065.,  5320.,
      5080.,  5380.,  7390.,  7800.,  10025., 10550., 10650., 11200., 9250.,
      9700.,  7495.,  7840.,  6812.,  7088.,  9664.,  10040., 12820., 13300.,
      13420., 13920., 11408., 11816., 9068.,  9380.,  7350.,  7584.,  10302.,
      10620., 13515., 13920., 14040., 14460., 11802., 12144., 9285.,  9546.,
      4776.,  5172.,  6966.,  7500.,  9465.,  10140., 9690.,  10380., 8418.,
      8976.,  6819.,  7242.,  9236.,  9800.,  13200., 13960., 17620., 18580.,
      18020., 19000., 15392., 16184., 12284., 12884., 15430., 16180., 21790.,
      22800., 28775., 30050., 29400., 30700., 24850., 25900., 19645., 20440.,
      17500., 18340., 24670., 25800., 32525., 33950., 33150., 34600., 27970.,
      29140., 22075., 22960., 18908., 19616., 26368., 27320., 34420., 35620.,
      35020., 36240., 29264., 30248., 22892., 23636., 18042., 18600., 24990.,
      25740., 32415., 33360., 32940., 33900., 27354., 28128., 21273., 21858.,
      8988.,  9708.,  13014., 13980., 17565., 18780., 17790., 19020., 15330.,
      16320., 12327., 13074., 17012., 18008., 24144., 25480., 32020., 33700.,
      32420., 34120., 27488., 28856., 21788., 22820., 27850., 29140., 39070.,
      40800., 51275., 53450., 51900., 54100., 43570., 45340., 34225., 35560.,
      29920., 31300., 41950., 43800., 55025., 57350., 55650., 58000., 46690.,
      48580., 36655., 38080., 31004., 32144., 43072., 44600., 56020., 57940.,
      56620., 58560., 47120., 48680., 36716., 37892., 28734., 29616., 39678.,
      40860., 51315., 52800., 51840., 53340., 42906., 44112., 33261., 34170.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    11.,   14.,   17.,   20.,   23.,   26.,
      18.,   20.,   14.,   18.,   48.,   58.,   68.,   78.,   88.,   98.,
      108.,  118.,  74.,   80.,   54.,   58.,   148.,  158.,  168.,  178.,
      188.,  198.,  208.,  218.,  134.,  140.,  94.,   98.,   248.,  258.,
      268.,  278.,  288.,  298.,  308.,  318.,  194.,  200.,  134.,  138.,
      348.,  358.,  368.,  378.,  388.,  398.,  408.,  418.,  254.,  260.,
      123.,  126.,  293.,  300.,  307.,  314.,  321.,  328.,  335.,  342.,
      196.,  200.,  5.,    10.,   21.,   32.,   43.,   54.,   65.,   76.,
      87.,   98.,   54.,   60.,   62.,   74.,   160.,  186.,  212.,  238.,
      264.,  290.,  316.,  342.,  186.,  200.,  182.,  194.,  420.,  446.,
      472.,  498.,  524.,  550.,  576.,  602.,  326.,  340.,  302.,  314.,
      680.,  706.,  732.,  758.,  784.,  810.,  836.,  862.,  466.,  480.,
      422.,  434.,  940.,  966.,  992.,  1018., 1044., 1070., 1096., 1122.,
      606.,  620.,  287.,  294.,  629.,  644.,  659.,  674.,  689.,  704.,
      719.,  734.,  392.,  400.,  9.,    18.,   37.,   56.,   75.,   94.,
      113.,  132.,  151.,  170.,  90.,   100.,  110.,  130.,  272.,  314.,
      356.,  398.,  440.,  482.,  524.,  566.,  298.,  320.,  310.,  330.,
      692.,  734.,  776.,  818.,  860.,  902.,  944.,  986.,  518.,  540.,
      510.,  530.,  1112., 1154., 1196., 1238., 1280., 1322., 1364., 1406.,
      738.,  760.,  710.,  730.,  1532., 1574., 1616., 1658., 1700., 1742.,
      1784., 1826., 958.,  980.,  451.,  462.,  965.,  988.,  1011., 1034.,
      1057., 1080., 1103., 1126., 588.,  600.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4143.,   4701.,   6816.,   7608.,   10215.,  11265.,  11985.,  13155.,
      11424.,  12408.,  9993.,   10767.,  10996.,  12028.,  17088.,  18528.,
      24500.,  26380.,  27660.,  29700.,  25280.,  26976.,  21388.,  22708.,
      22985.,  24635.,  34560.,  36840.,  48225.,  51175.,  53175.,  56325.,
      47360.,  49960.,  39215.,  41225.,  39365.,  41735.,  57360.,  60600.,
      77925.,  82075.,  82875.,  87225.,  72080.,  75640.,  58475.,  61205.,
      53284.,  55468.,  75648.,  78624.,  100420., 104220., 105180., 109140.,
      89472.,  92704.,  71164.,  73636.,  57747.,  59601.,  80976.,  83496.,
      106275., 109485., 110445., 113775., 92880.,  95592.,  73101.,  75171.,
      37191.,  40341.,  54336.,  58584.,  73935.,  79305.,  75705.,  81195.,
      65856.,  70296.,  53409.,  56775.,  72340.,  76828.,  103488., 109536.,
      138260., 145900., 141420., 149220., 120896., 127200., 96556.,  101332.,
      121265., 127235., 171360., 179400., 226425., 236575., 231375., 241725.,
      195680., 204040., 154775., 161105., 137645., 144335., 194160., 203160.,
      256125., 267475., 261075., 272625., 220400., 229720., 174035., 181085.,
      149188., 154828., 208128., 215712., 271780., 281340., 276540., 286260.,
      231168., 239008., 180892., 186820., 142635., 147081., 197616., 203592.,
      256395., 263925., 260565., 268215., 216432., 222600., 168357., 173019.,
      70239.,  75981.,  101856., 109560., 137655., 147345., 139425., 149235.,
      120288., 128184., 96825.,  102783., 133684., 141628., 189888., 200544.,
      252020., 265420., 255180., 268740., 216512., 227424., 171724., 179956.,
      219545., 229835., 308160., 321960., 404625., 421975., 409575., 427125.,
      344000., 358120., 270335., 280985., 235925., 246935., 330960., 345720.,
      434325., 452875., 439275., 458025., 368720., 383800., 289595., 300965.,
      245092., 254188., 340608., 352800., 443140., 458460., 447900., 463380.,
      372864., 385312., 290620., 300004., 227523., 234561., 314256., 323688.,
      406515., 418365., 410685., 422655., 339984., 349608., 263613., 270867.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    68.,   88.,    108.,   128.,   148.,
      168.,   123.,   137.,   82.,    110.,  312.,   384.,   456.,   528.,
      600.,   672.,   744.,   816.,   526.,  570.,   362.,   390.,   1032.,
      1104.,  1176.,  1248.,  1320.,  1392., 1464.,  1536.,  966.,   1010.,
      642.,   670.,   1752.,  1824.,  1896., 1968.,  2040.,  2112.,  2184.,
      2256.,  1406.,  1450.,  922.,   950.,  2472.,  2544.,  2616.,  2688.,
      2760.,  2832.,  2904.,  2976.,  1846., 1890.,  897.,   919.,   2164.,
      2216.,  2268.,  2320.,  2372.,  2424., 2476.,  2528.,  1463.,  1493.,
      29.,    67.,    140.,   224.,   308.,  392.,   476.,   560.,   644.,
      728.,   403.,   449.,   450.,   542.,  1176.,  1376.,  1576.,  1776.,
      1976.,  2176.,  2376.,  2576.,  1406., 1514.,  1370.,  1462.,  3176.,
      3376.,  3576.,  3776.,  3976.,  4176., 4376.,  4576.,  2486.,  2594.,
      2290.,  2382.,  5176.,  5376.,  5576., 5776.,  5976.,  6176.,  6376.,
      6576.,  3566.,  3674.,  3210.,  3302., 7176.,  7376.,  7576.,  7776.,
      7976.,  8176.,  8376.,  8576.,  4646., 4754.,  2201.,  2255.,  4836.,
      4952.,  5068.,  5184.,  5300.,  5416., 5532.,  5648.,  3023.,  3085.,
      53.,    123.,   252.,   400.,   548.,  696.,   844.,   992.,   1140.,
      1288.,  683.,   761.,   818.,   974.,  2040.,  2368.,  2696.,  3024.,
      3352.,  3680.,  4008.,  4336.,  2286., 2458.,  2378.,  2534.,  5320.,
      5648.,  5976.,  6304.,  6632.,  6960., 7288.,  7616.,  4006.,  4178.,
      3938.,  4094.,  8600.,  8928.,  9256., 9584.,  9912.,  10240., 10568.,
      10896., 5726.,  5898.,  5498.,  5654., 11880., 12208., 12536., 12864.,
      13192., 13520., 13848., 14176., 7446., 7618.,  3505.,  3591.,  7508.,
      7688.,  7868.,  8048.,  8228.,  8408., 8588.,  8768.,  4583.,  4677.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31686.,   36078.,   52440.,   58680.,   78930.,   87210.,   92970.,
      102210.,  88920.,   96696.,   77982.,   84102.,   85256.,   93416.,
      132896.,  144288.,  191000.,  205880.,  216120.,  232280.,  197920.,
      211360.,  167720.,  178184.,  179530.,  192610.,  270440.,  288520.,
      377950.,  401350.,  417350.,  442350.,  372200.,  392840.,  308530.,
      324490.,  309850.,  328690.,  451880.,  477640.,  614350.,  647350.,
      653750.,  688350.,  569000.,  597320.,  461890.,  483610.,  421448.,
      438824.,  598560.,  622240.,  794840.,  825080.,  832760.,  864280.,
      708640.,  734368.,  563816.,  583496.,  457782.,  472542.,  642072.,
      662136.,  842850.,  868410.,  876090.,  902610.,  736920.,  758520.,
      580110.,  596598.,  293478.,  318606.,  429144.,  463032.,  584370.,
      627210.,  598410.,  642210.,  520920.,  556344.,  422718.,  449574.,
      572552.,  608360.,  819488.,  867744.,  1095320., 1156280., 1120440.,
      1182680., 958240.,  1008544., 765608.,  803720.,  961450.,  1009090.,
      1359080., 1423240., 1796350., 1877350., 1835750., 1918350., 1553000.,
      1619720., 1228690., 1279210., 1091770., 1145170., 1540520., 1612360.,
      2032750., 2123350., 2072150., 2164350., 1749800., 1824200., 1382050.,
      1438330., 1185224., 1230248., 1653792., 1714336., 2159960., 2236280.,
      2197880., 2275480., 1837600., 1900192., 1438184., 1485512., 1134294.,
      1169790., 1571736., 1619448., 2039490., 2099610., 2072730., 2133810.,
      1721880., 1771128., 1339566., 1376790., 555270.,  601134.,  805848.,
      867384.,  1089810., 1167210., 1103850., 1182210., 952920.,  1015992.,
      767454.,  815046.,  1059848., 1123304., 1506080., 1591200., 1999640.,
      2106680., 2024760., 2133080., 1718560., 1805728., 1363496., 1429256.,
      1743370., 1825570., 2447720., 2557960., 3214750., 3353350., 3254150.,
      3394350., 2733800., 2846600., 2148850., 2233930., 1873690., 1961650.,
      2629160., 2747080., 3451150., 3599350., 3490550., 3640350., 2930600.,
      3051080., 2302210., 2393050., 1949000., 2021672., 2709024., 2806432.,
      3525080., 3647480., 3563000., 3686680., 2966560., 3066016., 2312552.,
      2387528., 1810806., 1867038., 2501400., 2576760., 3236130., 3330810.,
      3269370., 3365010., 2706840., 2783736., 2099022., 2156982.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,   324.,   468.,   612.,    756.,    900.,
      1044.,   1188.,   902.,   1006.,  540.,   748.,    2216.,   2760.,
      3304.,   3848.,   4392.,  4936.,  5480.,  6024.,   3948.,   4284.,
      2620.,   2828.,   7656.,  8200.,  8744.,  9288.,   9832.,   10376.,
      10920.,  11464.,  7308.,  7644.,  4700.,  4908.,   13096.,  13640.,
      14184.,  14728.,  15272., 15816., 16360., 16904.,  10668.,  11004.,
      6780.,   6988.,   18536., 19080., 19624., 20168.,  20712.,  21256.,
      21800.,  22344.,  14028., 14364., 6830.,  6998.,   16596.,  16996.,
      17396.,  17796.,  18196., 18596., 18996., 19396.,  11286.,  11518.,
      190.,    486.,    1012.,  1668.,  2324.,  2980.,   3636.,   4292.,
      4948.,   5604.,   3110.,  3470.,  3420.,  4140.,   9000.,   10568.,
      12136.,  13704.,  15272., 16840., 18408., 19976.,  10924.,  11772.,
      10620.,  11340.,  24680., 26248., 27816., 29384.,  30952.,  32520.,
      34088.,  35656.,  19404., 20252., 17820., 18540.,  40360.,  41928.,
      43496.,  45064.,  46632., 48200., 49768., 51336.,  27884.,  28732.,
      25020.,  25740.,  56040., 57608., 59176., 60744.,  62312.,  63880.,
      65448.,  67016.,  36364., 37212., 17230., 17654.,  37908.,  38820.,
      39732.,  40644.,  41556., 42468., 43380., 44292.,  23734.,  24222.,
      350.,    902.,    1844.,  3012.,  4180.,  5348.,   6516.,   7684.,
      8852.,   10020.,  5318.,  5934.,  6300.,  7532.,   15784.,  18376.,
      20968.,  23560.,  26152., 28744., 31336., 33928.,  17900.,  19260.,
      18620.,  19852.,  41704., 44296., 46888., 49480.,  52072.,  54664.,
      57256.,  59848.,  31500., 32860., 30940., 32172.,  67624.,  70216.,
      72808.,  75400.,  77992., 80584., 83176., 85768.,  45100.,  46460.,
      43260.,  44492.,  93544., 96136., 98728., 101320., 103912., 106504.,
      109096., 111688., 58700., 60060., 27630., 28310.,  59220.,  60644.,
      62068.,  63492.,  64916., 66340., 67764., 69188.,  36182.,  36926.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1056.,   1128.,   1200.,   1272.,   1734.,   1836.,   1938.,   2040.,
      2595.,   2730.,   2865.,   3000.,   3030.,   3180.,   3330.,   3480.,
      2886.,   3012.,   3138.,   3264.,   2523.,   2622.,   2721.,   2820.,
      2788.,   2920.,   3052.,   3184.,   4328.,   4512.,   4696.,   4880.,
      6200.,   6440.,   6680.,   6920.,   6980.,   7240.,   7500.,   7760.,
      6376.,   6592.,   6808.,   7024.,   5392.,   5560.,   5728.,   5896.,
      5810.,   6020.,   6230.,   6440.,   8730.,   9020.,   9310.,   9600.,
      12175.,  12550.,  12925.,  13300.,  13400.,  13800.,  14200.,  14600.,
      11930.,  12260.,  12590.,  12920.,  9875.,   10130.,  10385.,  10640.,
      9860.,   10160.,  10460.,  10760.,  14370.,  14780.,  15190.,  15600.,
      19525.,  20050.,  20575.,  21100.,  20750.,  21300.,  21850.,  22400.,
      18050.,  18500.,  18950.,  19400.,  14645.,  14990.,  15335.,  15680.,
      13348.,  13624.,  13900.,  14176.,  18952.,  19328.,  19704.,  20080.,
      25160.,  25640.,  26120.,  26600.,  26340.,  26840.,  27340.,  27840.,
      22408.,  22816.,  23224.,  23632.,  17824.,  18136.,  18448.,  18760.,
      14466.,  14700.,  14934.,  15168.,  20286.,  20604.,  20922.,  21240.,
      26625.,  27030.,  27435.,  27840.,  27660.,  28080.,  28500.,  28920.,
      23262.,  23604.,  23946.,  24288.,  18309.,  18570.,  18831.,  19092.,
      9156.,   9552.,   9948.,   10344.,  13398.,  13932.,  14466.,  15000.,
      18255.,  18930.,  19605.,  20280.,  18690.,  19380.,  20070.,  20760.,
      16278.,  16836.,  17394.,  17952.,  13215.,  13638.,  14061.,  14484.,
      17908.,  18472.,  19036.,  19600.,  25640.,  26400.,  27160.,  27920.,
      34280.,  35240.,  36200.,  37160.,  35060.,  36040.,  37020.,  38000.,
      29992.,  30784.,  31576.,  32368.,  23968.,  24568.,  25168.,  25768.,
      30110.,  30860.,  31610.,  32360.,  42570.,  43580.,  44590.,  45600.,
      56275.,  57550.,  58825.,  60100.,  57500.,  58800.,  60100.,  61400.,
      48650.,  49700.,  50750.,  51800.,  38495.,  39290.,  40085.,  40880.,
      34160.,  35000.,  35840.,  36680.,  48210.,  49340.,  50470.,  51600.,
      63625.,  65050.,  66475.,  67900.,  64850.,  66300.,  67750.,  69200.,
      54770.,  55940.,  57110.,  58280.,  43265.,  44150.,  45035.,  45920.,
      37108.,  37816.,  38524.,  39232.,  51784.,  52736.,  53688.,  54640.,
      67640.,  68840.,  70040.,  71240.,  68820.,  70040.,  71260.,  72480.,
      57544.,  58528.,  59512.,  60496.,  45040.,  45784.,  46528.,  47272.,
      35526.,  36084.,  36642.,  37200.,  49230.,  49980.,  50730.,  51480.,
      63885.,  64830.,  65775.,  66720.,  64920.,  65880.,  66840.,  67800.,
      53934.,  54708.,  55482.,  56256.,  41961.,  42546.,  43131.,  43716.,
      17256.,  17976.,  18696.,  19416.,  25062.,  26028.,  26994.,  27960.,
      33915.,  35130.,  36345.,  37560.,  34350.,  35580.,  36810.,  38040.,
      29670.,  30660.,  31650.,  32640.,  23907.,  24654.,  25401.,  26148.,
      33028.,  34024.,  35020.,  36016.,  46952.,  48288.,  49624.,  50960.,
      62360.,  64040.,  65720.,  67400.,  63140.,  64840.,  66540.,  68240.,
      53608.,  54976.,  56344.,  57712.,  42544.,  43576.,  44608.,  45640.,
      54410.,  55700.,  56990.,  58280.,  76410.,  78140.,  79870.,  81600.,
      100375., 102550., 104725., 106900., 101600., 103800., 106000., 108200.,
      85370.,  87140.,  88910.,  90680.,  67115.,  68450.,  69785.,  71120.,
      58460.,  59840.,  61220.,  62600.,  82050.,  83900.,  85750.,  87600.,
      107725., 110050., 112375., 114700., 108950., 111300., 113650., 116000.,
      91490.,  93380.,  95270.,  97160.,  71885.,  73310.,  74735.,  76160.,
      60868.,  62008.,  63148.,  64288.,  84616.,  86144.,  87672.,  89200.,
      110120., 112040., 113960., 115880., 111300., 113240., 115180., 117120.,
      92680.,  94240.,  95800.,  97360.,  72256.,  73432.,  74608.,  75784.,
      56586.,  57468.,  58350.,  59232.,  78174.,  79356.,  80538.,  81720.,
      101145., 102630., 104115., 105600., 102180., 103680., 105180., 106680.,
      84606.,  85812.,  87018.,  88224.,  65613.,  66522.,  67431.,  68340.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   19.,   22.,
      25.,   28.,   31.,   34.,   37.,   40.,   43.,   46.,   49.,   52.,
      34.,   36.,   38.,   40.,   24.,   28.,   32.,   36.,   86.,   96.,
      106.,  116.,  126.,  136.,  146.,  156.,  166.,  176.,  186.,  196.,
      206.,  216.,  226.,  236.,  142.,  148.,  154.,  160.,  104.,  108.,
      112.,  116.,  286.,  296.,  306.,  316.,  326.,  336.,  346.,  356.,
      366.,  376.,  386.,  396.,  406.,  416.,  426.,  436.,  262.,  268.,
      274.,  280.,  184.,  188.,  192.,  196.,  486.,  496.,  506.,  516.,
      526.,  536.,  546.,  556.,  566.,  576.,  586.,  596.,  606.,  616.,
      626.,  636.,  382.,  388.,  394.,  400.,  264.,  268.,  272.,  276.,
      686.,  696.,  706.,  716.,  726.,  736.,  746.,  756.,  766.,  776.,
      786.,  796.,  806.,  816.,  826.,  836.,  502.,  508.,  514.,  520.,
      243.,  246.,  249.,  252.,  579.,  586.,  593.,  600.,  607.,  614.,
      621.,  628.,  635.,  642.,  649.,  656.,  663.,  670.,  677.,  684.,
      388.,  392.,  396.,  400.,  5.,    10.,   15.,   20.,   31.,   42.,
      53.,   64.,   75.,   86.,   97.,   108.,  119.,  130.,  141.,  152.,
      163.,  174.,  185.,  196.,  102.,  108.,  114.,  120.,  112.,  124.,
      136.,  148.,  294.,  320.,  346.,  372.,  398.,  424.,  450.,  476.,
      502.,  528.,  554.,  580.,  606.,  632.,  658.,  684.,  358.,  372.,
      386.,  400.,  352.,  364.,  376.,  388.,  814.,  840.,  866.,  892.,
      918.,  944.,  970.,  996.,  1022., 1048., 1074., 1100., 1126., 1152.,
      1178., 1204., 638.,  652.,  666.,  680.,  592.,  604.,  616.,  628.,
      1334., 1360., 1386., 1412., 1438., 1464., 1490., 1516., 1542., 1568.,
      1594., 1620., 1646., 1672., 1698., 1724., 918.,  932.,  946.,  960.,
      832.,  844.,  856.,  868.,  1854., 1880., 1906., 1932., 1958., 1984.,
      2010., 2036., 2062., 2088., 2114., 2140., 2166., 2192., 2218., 2244.,
      1198., 1212., 1226., 1240., 567.,  574.,  581.,  588.,  1243., 1258.,
      1273., 1288., 1303., 1318., 1333., 1348., 1363., 1378., 1393., 1408.,
      1423., 1438., 1453., 1468., 776.,  784.,  792.,  800.,  9.,    18.,
      27.,   36.,   55.,   74.,   93.,   112.,  131.,  150.,  169.,  188.,
      207.,  226.,  245.,  264.,  283.,  302.,  321.,  340.,  170.,  180.,
      190.,  200.,  200.,  220.,  240.,  260.,  502.,  544.,  586.,  628.,
      670.,  712.,  754.,  796.,  838.,  880.,  922.,  964.,  1006., 1048.,
      1090., 1132., 574.,  596.,  618.,  640.,  600.,  620.,  640.,  660.,
      1342., 1384., 1426., 1468., 1510., 1552., 1594., 1636., 1678., 1720.,
      1762., 1804., 1846., 1888., 1930., 1972., 1014., 1036., 1058., 1080.,
      1000., 1020., 1040., 1060., 2182., 2224., 2266., 2308., 2350., 2392.,
      2434., 2476., 2518., 2560., 2602., 2644., 2686., 2728., 2770., 2812.,
      1454., 1476., 1498., 1520., 1400., 1420., 1440., 1460., 3022., 3064.,
      3106., 3148., 3190., 3232., 3274., 3316., 3358., 3400., 3442., 3484.,
      3526., 3568., 3610., 3652., 1894., 1916., 1938., 1960., 891.,  902.,
      913.,  924.,  1907., 1930., 1953., 1976., 1999., 2022., 2045., 2068.,
      2091., 2114., 2137., 2160., 2183., 2206., 2229., 2252., 1164., 1176.,
      1188., 1200.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7863.,   8421.,   8979.,   9537.,   13032.,  13824.,  14616.,  15408.,
      19635.,  20685.,  21735.,  22785.,  23085.,  24255.,  25425.,  26595.,
      22104.,  23088.,  24072.,  25056.,  19401.,  20175.,  20949.,  21723.,
      21212.,  22244.,  23276.,  24308.,  33088.,  34528.,  35968.,  37408.,
      47580.,  49460.,  51340.,  53220.,  53780.,  55820.,  57860.,  59900.,
      49280.,  50976.,  52672.,  54368.,  41780.,  43100.,  44420.,  45740.,
      44725.,  46375.,  48025.,  49675.,  67400.,  69680.,  71960.,  74240.,
      94225.,  97175.,  100125., 103075., 103975., 107125., 110275., 113425.,
      92760.,  95360.,  97960.,  100560., 76915.,  78925.,  80935.,  82945.,
      76945.,  79315.,  81685.,  84055.,  112280., 115520., 118760., 122000.,
      152725., 156875., 161025., 165175., 162475., 166825., 171175., 175525.,
      141480., 145040., 148600., 152160., 114895., 117625., 120355., 123085.,
      104924., 107108., 109292., 111476., 149056., 152032., 155008., 157984.,
      197980., 201780., 205580., 209380., 207380., 211340., 215300., 219260.,
      176512., 179744., 182976., 186208., 140468., 142940., 145412., 147884.,
      114099., 115953., 117807., 119661., 160056., 162576., 165096., 167616.,
      210135., 213345., 216555., 219765., 218385., 221715., 225045., 228375.,
      183720., 186432., 189144., 191856., 144645., 146715., 148785., 150855.,
      72015.,  75165.,  78315.,  81465.,  105480., 109728., 113976., 118224.,
      143835., 149205., 154575., 159945., 147285., 152775., 158265., 163755.,
      128376., 132816., 137256., 141696., 104289., 107655., 111021., 114387.,
      141308., 145796., 150284., 154772., 202432., 208480., 214528., 220576.,
      270780., 278420., 286060., 293700., 276980., 284780., 292580., 300380.,
      237056., 243360., 249664., 255968., 189524., 194300., 199076., 203852.,
      238045., 244015., 249985., 255955., 336680., 344720., 352760., 360800.,
      445225., 455375., 465525., 475675., 454975., 465325., 475675., 486025.,
      385080., 393440., 401800., 410160., 304795., 311125., 317455., 323785.,
      270265., 276955., 283645., 290335., 381560., 390560., 399560., 408560.,
      503725., 515075., 526425., 537775., 513475., 525025., 536575., 548125.,
      433800., 443120., 452440., 461760., 342775., 349825., 356875., 363925.,
      294140., 299780., 305420., 311060., 410560., 418144., 425728., 433312.,
      536380., 545940., 555500., 565060., 545780., 555500., 565220., 574940.,
      456448., 464288., 472128., 479968., 357332., 363260., 369188., 375116.,
      281931., 286377., 290823., 295269., 390744., 396720., 402696., 408672.,
      507135., 514665., 522195., 529725., 515385., 523035., 530685., 538335.,
      428232., 434400., 440568., 446736., 333213., 337875., 342537., 347199.,
      136167., 141909., 147651., 153393., 197928., 205632., 213336., 221040.,
      268035., 277725., 287415., 297105., 271485., 281295., 291105., 300915.,
      234648., 242544., 250440., 258336., 189177., 195135., 201093., 207051.,
      261404., 269348., 277292., 285236., 371776., 382432., 393088., 403744.,
      493980., 507380., 520780., 534180., 500180., 513740., 527300., 540860.,
      424832., 435744., 446656., 457568., 337268., 345500., 353732., 361964.,
      431365., 441655., 451945., 462235., 605960., 619760., 633560., 647360.,
      796225., 813575., 830925., 848275., 805975., 823525., 841075., 858625.,
      677400., 691520., 705640., 719760., 532675., 543325., 553975., 564625.,
      463585., 474595., 485605., 496615., 650840., 665600., 680360., 695120.,
      854725., 873275., 891825., 910375., 864475., 883225., 901975., 920725.,
      726120., 741200., 756280., 771360., 570655., 582025., 593395., 604765.,
      483356., 492452., 501548., 510644., 672064., 684256., 696448., 708640.,
      874780., 890100., 905420., 920740., 884180., 899660., 915140., 930620.,
      736384., 748832., 761280., 773728., 574196., 583580., 592964., 602348.,
      449763., 456801., 463839., 470877., 621432., 630864., 640296., 649728.,
      804135., 815985., 827835., 839685., 812385., 824355., 836325., 848295.,
      672744., 682368., 691992., 701616., 521781., 529035., 536289., 543543.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   120.,
      140.,   160.,   180.,   200.,   220.,   240.,   260.,   280.,   300.,
      320.,   340.,   235.,   249.,   263.,   277.,   142.,   170.,   198.,
      226.,   568.,   640.,   712.,   784.,   856.,   928.,   1000.,  1072.,
      1144.,  1216.,  1288.,  1360.,  1432.,  1504.,  1576.,  1648.,  1018.,
      1062.,  1106.,  1150.,  702.,   730.,   758.,   786.,   2008.,  2080.,
      2152.,  2224.,  2296.,  2368.,  2440.,  2512.,  2584.,  2656.,  2728.,
      2800.,  2872.,  2944.,  3016.,  3088.,  1898.,  1942.,  1986.,  2030.,
      1262.,  1290.,  1318.,  1346.,  3448.,  3520.,  3592.,  3664.,  3736.,
      3808.,  3880.,  3952.,  4024.,  4096.,  4168.,  4240.,  4312.,  4384.,
      4456.,  4528.,  2778.,  2822.,  2866.,  2910.,  1822.,  1850.,  1878.,
      1906.,  4888.,  4960.,  5032.,  5104.,  5176.,  5248.,  5320.,  5392.,
      5464.,  5536.,  5608.,  5680.,  5752.,  5824.,  5896.,  5968.,  3658.,
      3702.,  3746.,  3790.,  1777.,  1799.,  1821.,  1843.,  4288.,  4340.,
      4392.,  4444.,  4496.,  4548.,  4600.,  4652.,  4704.,  4756.,  4808.,
      4860.,  4912.,  4964.,  5016.,  5068.,  2903.,  2933.,  2963.,  2993.,
      29.,    67.,    105.,   143.,   216.,   300.,   384.,   468.,   552.,
      636.,   720.,   804.,   888.,   972.,   1056.,  1140.,  1224.,  1308.,
      1392.,  1476.,  771.,   817.,   863.,   909.,   830.,   922.,   1014.,
      1106.,  2200.,  2400.,  2600.,  2800.,  3000.,  3200.,  3400.,  3600.,
      3800.,  4000.,  4200.,  4400.,  4600.,  4800.,  5000.,  5200.,  2730.,
      2838.,  2946.,  3054.,  2670.,  2762.,  2854.,  2946.,  6200.,  6400.,
      6600.,  6800.,  7000.,  7200.,  7400.,  7600.,  7800.,  8000.,  8200.,
      8400.,  8600.,  8800.,  9000.,  9200.,  4890.,  4998.,  5106.,  5214.,
      4510.,  4602.,  4694.,  4786.,  10200., 10400., 10600., 10800., 11000.,
      11200., 11400., 11600., 11800., 12000., 12200., 12400., 12600., 12800.,
      13000., 13200., 7050.,  7158.,  7266.,  7374.,  6350.,  6442.,  6534.,
      6626.,  14200., 14400., 14600., 14800., 15000., 15200., 15400., 15600.,
      15800., 16000., 16200., 16400., 16600., 16800., 17000., 17200., 9210.,
      9318.,  9426.,  9534.,  4361.,  4415.,  4469.,  4523.,  9584.,  9700.,
      9816.,  9932.,  10048., 10164., 10280., 10396., 10512., 10628., 10744.,
      10860., 10976., 11092., 11208., 11324., 5999.,  6061.,  6123.,  6185.,
      53.,    123.,   193.,   263.,   392.,   540.,   688.,   836.,   984.,
      1132.,  1280.,  1428.,  1576.,  1724.,  1872.,  2020.,  2168.,  2316.,
      2464.,  2612.,  1307.,  1385.,  1463.,  1541.,  1518.,  1674.,  1830.,
      1986.,  3832.,  4160.,  4488.,  4816.,  5144.,  5472.,  5800.,  6128.,
      6456.,  6784.,  7112.,  7440.,  7768.,  8096.,  8424.,  8752.,  4442.,
      4614.,  4786.,  4958.,  4638.,  4794.,  4950.,  5106.,  10392., 10720.,
      11048., 11376., 11704., 12032., 12360., 12688., 13016., 13344., 13672.,
      14000., 14328., 14656., 14984., 15312., 7882.,  8054.,  8226.,  8398.,
      7758.,  7914.,  8070.,  8226.,  16952., 17280., 17608., 17936., 18264.,
      18592., 18920., 19248., 19576., 19904., 20232., 20560., 20888., 21216.,
      21544., 21872., 11322., 11494., 11666., 11838., 10878., 11034., 11190.,
      11346., 23512., 23840., 24168., 24496., 24824., 25152., 25480., 25808.,
      26136., 26464., 26792., 27120., 27448., 27776., 28104., 28432., 14762.,
      14934., 15106., 15278., 6945.,  7031.,  7117.,  7203.,  14880., 15060.,
      15240., 15420., 15600., 15780., 15960., 16140., 16320., 16500., 16680.,
      16860., 17040., 17220., 17400., 17580., 9095.,  9189.,  9283.,  9377.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      60582.,   64974.,   69366.,   73758.,   100920.,  107160.,  113400.,
      119640.,  152610.,  160890.,  169170.,  177450.,  180090.,  189330.,
      198570.,  207810.,  172920.,  180696.,  188472.,  196248.,  152094.,
      158214.,  164334.,  170454.,  165352.,  173512.,  181672.,  189832.,
      258592.,  269984.,  281376.,  292768.,  372600.,  387480.,  402360.,
      417240.,  422040.,  438200.,  454360.,  470520.,  387360.,  400800.,
      414240.,  427680.,  328840.,  339304.,  349768.,  360232.,  350810.,
      363890.,  376970.,  390050.,  529480.,  547560.,  565640.,  583720.,
      741150.,  764550.,  787950.,  811350.,  818950.,  843950.,  868950.,
      893950.,  731400.,  752040.,  772680.,  793320.,  607010.,  622970.,
      638930.,  654890.,  607850.,  626690.,  645530.,  664370.,  887560.,
      913320.,  939080.,  964840.,  1207950., 1240950., 1273950., 1306950.,
      1285750., 1320350., 1354950., 1389550., 1120200., 1148520., 1176840.,
      1205160., 910130.,  931850.,  953570.,  975290.,  831976.,  849352.,
      866728.,  884104.,  1182240., 1205920., 1229600., 1253280., 1570680.,
      1600920., 1631160., 1661400., 1645720., 1677240., 1708760., 1740280.,
      1401120., 1426848., 1452576., 1478304., 1115272., 1134952., 1154632.,
      1174312., 906294.,  921054.,  935814.,  950574.,  1271544., 1291608.,
      1311672., 1331736., 1669650., 1695210., 1720770., 1746330., 1735530.,
      1762050., 1788570., 1815090., 1460280., 1481880., 1503480., 1525080.,
      1149870., 1166358., 1182846., 1199334., 571206.,  596334.,  621462.,
      646590.,  837048.,  870936.,  904824.,  938712.,  1141890., 1184730.,
      1227570., 1270410., 1169370., 1213170., 1256970., 1300770., 1019640.,
      1055064., 1090488., 1125912., 828606.,  855462.,  882318.,  909174.,
      1122664., 1158472., 1194280., 1230088., 1608736., 1656992., 1705248.,
      1753504., 2152440., 2213400., 2274360., 2335320., 2201880., 2264120.,
      2326360., 2388600., 1884960., 1935264., 1985568., 2035872., 1507336.,
      1545448., 1583560., 1621672., 1893050., 1940690., 1988330., 2035970.,
      2677960., 2742120., 2806280., 2870440., 3541950., 3622950., 3703950.,
      3784950., 3619750., 3702350., 3784950., 3867550., 3064200., 3130920.,
      3197640., 3264360., 2425730., 2476250., 2526770., 2577290., 2150090.,
      2203490., 2256890., 2310290., 3036040., 3107880., 3179720., 3251560.,
      4008750., 4099350., 4189950., 4280550., 4086550., 4178750., 4270950.,
      4363150., 3453000., 3527400., 3601800., 3676200., 2728850., 2785130.,
      2841410., 2897690., 2342248., 2387272., 2432296., 2477320., 3269664.,
      3330208., 3390752., 3451296., 4272120., 4348440., 4424760., 4501080.,
      4347160., 4424760., 4502360., 4579960., 3636000., 3698592., 3761184.,
      3823776., 2846728., 2894056., 2941384., 2988712., 2246358., 2281854.,
      2317350., 2352846., 3113592., 3161304., 3209016., 3256728., 4041330.,
      4101450., 4161570., 4221690., 4107210., 4168290., 4229370., 4290450.,
      3412920., 3462168., 3511416., 3560664., 2655822., 2693046., 2730270.,
      2767494., 1081830., 1127694., 1173558., 1219422., 1573176., 1634712.,
      1696248., 1757784., 2131170., 2208570., 2285970., 2363370., 2158650.,
      2237010., 2315370., 2393730., 1866360., 1929432., 1992504., 2055576.,
      1505118., 1552710., 1600302., 1647894., 2079976., 2143432., 2206888.,
      2270344., 2958880., 3044000., 3129120., 3214240., 3932280., 4039320.,
      4146360., 4253400., 3981720., 4090040., 4198360., 4306680., 3382560.,
      3469728., 3556896., 3644064., 2685832., 2751592., 2817352., 2883112.,
      3435290., 3517490., 3599690., 3681890., 4826440., 4936680., 5046920.,
      5157160., 6342750., 6481350., 6619950., 6758550., 6420550., 6560750.,
      6700950., 6841150., 5397000., 5509800., 5622600., 5735400., 4244450.,
      4329530., 4414610., 4499690., 3692330., 3780290., 3868250., 3956210.,
      5184520., 5302440., 5420360., 5538280., 6809550., 6957750., 7105950.,
      7254150., 6887350., 7037150., 7186950., 7336750., 5785800., 5906280.,
      6026760., 6147240., 4547570., 4638410., 4729250., 4820090., 3852520.,
      3925192., 3997864., 4070536., 5357088., 5454496., 5551904., 5649312.,
      6973560., 7095960., 7218360., 7340760., 7048600., 7172280., 7295960.,
      7419640., 5870880., 5970336., 6069792., 6169248., 4578184., 4653160.,
      4728136., 4803112., 3586422., 3642654., 3698886., 3755118., 4955640.,
      5031000., 5106360., 5181720., 6413010., 6507690., 6602370., 6697050.,
      6478890., 6574530., 6670170., 6765810., 5365560., 5442456., 5519352.,
      5596248., 4161774., 4219734., 4277694., 4335654.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      836.,    980.,    1124.,   1268.,   1412.,   1556.,   1700.,   1844.,
      1988.,   2132.,   2276.,   2420.,   1734.,   1838.,   1942.,   2046.,
      940.,    1148.,   1356.,   1564.,   4072.,   4616.,   5160.,   5704.,
      6248.,   6792.,   7336.,   7880.,   8424.,   8968.,   9512.,   10056.,
      10600.,  11144.,  11688.,  12232.,  7676.,   8012.,   8348.,   8684.,
      5100.,   5308.,   5516.,   5724.,   14952.,  15496.,  16040.,  16584.,
      17128.,  17672.,  18216.,  18760.,  19304.,  19848.,  20392.,  20936.,
      21480.,  22024.,  22568.,  23112.,  14396.,  14732.,  15068.,  15404.,
      9260.,   9468.,   9676.,   9884.,   25832.,  26376.,  26920.,  27464.,
      28008.,  28552.,  29096.,  29640.,  30184.,  30728.,  31272.,  31816.,
      32360.,  32904.,  33448.,  33992.,  21116.,  21452.,  21788.,  22124.,
      13420.,  13628.,  13836.,  14044.,  36712.,  37256.,  37800.,  38344.,
      38888.,  39432.,  39976.,  40520.,  41064.,  41608.,  42152.,  42696.,
      43240.,  43784.,  44328.,  44872.,  27836.,  28172.,  28508.,  28844.,
      13550.,  13718.,  13886.,  14054.,  32932.,  33332.,  33732.,  34132.,
      34532.,  34932.,  35332.,  35732.,  36132.,  36532.,  36932.,  37332.,
      37732.,  38132.,  38532.,  38932.,  22422.,  22654.,  22886.,  23118.,
      190.,    486.,    782.,    1078.,   1604.,   2260.,   2916.,   3572.,
      4228.,   4884.,   5540.,   6196.,   6852.,   7508.,   8164.,   8820.,
      9476.,   10132.,  10788.,  11444.,  5990.,   6350.,   6710.,   7070.,
      6380.,   7100.,   7820.,   8540.,   17000.,  18568.,  20136.,  21704.,
      23272.,  24840.,  26408.,  27976.,  29544.,  31112.,  32680.,  34248.,
      35816.,  37384.,  38952.,  40520.,  21308.,  22156.,  23004.,  23852.,
      20780.,  21500.,  22220.,  22940.,  48360.,  49928.,  51496.,  53064.,
      54632.,  56200.,  57768.,  59336.,  60904.,  62472.,  64040.,  65608.,
      67176.,  68744.,  70312.,  71880.,  38268.,  39116.,  39964.,  40812.,
      35180.,  35900.,  36620.,  37340.,  79720.,  81288.,  82856.,  84424.,
      85992.,  87560.,  89128.,  90696.,  92264.,  93832.,  95400.,  96968.,
      98536.,  100104., 101672., 103240., 55228.,  56076.,  56924.,  57772.,
      49580.,  50300.,  51020.,  51740.,  111080., 112648., 114216., 115784.,
      117352., 118920., 120488., 122056., 123624., 125192., 126760., 128328.,
      129896., 131464., 133032., 134600., 72188.,  73036.,  73884.,  74732.,
      34190.,  34614.,  35038.,  35462.,  75236.,  76148.,  77060.,  77972.,
      78884.,  79796.,  80708.,  81620.,  82532.,  83444.,  84356.,  85268.,
      86180.,  87092.,  88004.,  88916.,  47158.,  47646.,  48134.,  48622.,
      350.,    902.,    1454.,   2006.,   2948.,   4116.,   5284.,   6452.,
      7620.,   8788.,   9956.,   11124.,  12292.,  13460.,  14628.,  15796.,
      16964.,  18132.,  19300.,  20468.,  10246.,  10862.,  11478.,  12094.,
      11820.,  13052.,  14284.,  15516.,  29928.,  32520.,  35112.,  37704.,
      40296.,  42888.,  45480.,  48072.,  50664.,  53256.,  55848.,  58440.,
      61032.,  63624.,  66216.,  68808.,  34940.,  36300.,  37660.,  39020.,
      36460.,  37692.,  38924.,  40156.,  81768.,  84360.,  86952.,  89544.,
      92136.,  94728.,  97320.,  99912.,  102504., 105096., 107688., 110280.,
      112872., 115464., 118056., 120648., 62140.,  63500.,  64860.,  66220.,
      61100.,  62332.,  63564.,  64796.,  133608., 136200., 138792., 141384.,
      143976., 146568., 149160., 151752., 154344., 156936., 159528., 162120.,
      164712., 167304., 169896., 172488., 89340.,  90700.,  92060.,  93420.,
      85740.,  86972.,  88204.,  89436.,  185448., 188040., 190632., 193224.,
      195816., 198408., 201000., 203592., 206184., 208776., 211368., 213960.,
      216552., 219144., 221736., 224328., 116540., 117900., 119260., 120620.,
      54830.,  55510.,  56190.,  56870.,  117540., 118964., 120388., 121812.,
      123236., 124660., 126084., 127508., 128932., 130356., 131780., 133204.,
      134628., 136052., 137476., 138900., 71894.,  72638.,  73382.,  74126.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      351.,   560.,   820.,   940.,   1060.,  980.,   837.,   892.,   1360.,
      1920.,  2130.,  2340.,  2096.,  1744.,  1820.,  2700.,  3725.,  4050.,
      4375.,  3840.,  3140.,  3080.,  4450.,  6000.,  6325.,  6650.,  5730.,
      4610.,  4078.,  5760.,  7610.,  7920.,  8230.,  6960.,  5506.,  4374.,
      6110.,  7990.,  8260.,  8530.,  7142.,  5598.,  2997.,  4340.,  5860.,
      5980.,  6100.,  5264.,  4239.,  5680.,  8080.,  10740., 10950., 11160.,
      9488.,  7540.,  9380.,  13200., 17375., 17700., 18025., 15180., 11960.,
      10640., 14950., 19650., 19975., 20300., 17070., 13430., 11386., 15840.,
      20630., 20940., 21250., 17712., 13822., 10800., 14930., 19330., 19600.,
      19870., 16466., 12780., 5643.,  8120.,  10900., 11020., 11140., 9548.,
      7641.,  10468., 14800., 19560., 19770., 19980., 16880., 13336., 16940.,
      23700., 31025., 31350., 31675., 26520., 20780., 18200., 25450., 33300.,
      33625., 33950., 28410., 22250., 18694., 25920., 33650., 33960., 34270.,
      28464., 22138., 17226., 23750., 30670., 30940., 31210., 25790., 19962.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    10.,   16.,   22.,   22.,   15.,   10.,   32.,   68.,
      89.,   110.,  96.,   60.,   35.,   92.,   173.,  194.,  215.,  176.,
      105.,  60.,   152.,  278.,  299.,  320.,  256.,  150.,  85.,   212.,
      383.,  404.,  425.,  336.,  195.,  84.,   193.,  328.,  343.,  358.,
      269.,  150.,  7.,    22.,   46.,   70.,   94.,   76.,   45.,   52.,
      128.,  230.,  287.,  344.,  264.,  150.,  137.,  308.,  515.,  572.,
      629.,  464.,  255.,  222.,  488.,  800.,  857.,  914.,  664.,  360.,
      307.,  668.,  1085., 1142., 1199., 864.,  465.,  210.,  451.,  724.,
      757.,  790.,  563.,  300.,  13.,   40.,   82.,   124.,  166.,  130.,
      75.,   94.,   224.,  392.,  485.,  578.,  432.,  240.,  239.,  524.,
      857.,  950.,  1043., 752.,  405.,  384.,  824.,  1322., 1415., 1508.,
      1072., 570.,  529.,  1124., 1787., 1880., 1973., 1392., 735.,  336.,
      709.,  1120., 1171., 1222., 857.,  450.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2529.,   4084.,   6035.,   6965.,   7895.,   7348.,   6309.,   6620.,
      10160.,  14420.,  16060.,  17700.,  15920.,  13292.,  13735.,  20460.,
      28325.,  30875.,  33425.,  29420.,  24115.,  23605.,  34180.,  46175.,
      48725.,  51275.,  44260.,  35665.,  31652.,  44752.,  59180.,  61620.,
      64060.,  54224.,  42932.,  34155.,  47740.,  62465.,  64595.,  66725.,
      55900.,  43839.,  22941.,  33316.,  45095.,  46025.,  46955.,  40612.,
      32769.,  43916.,  62576.,  83300.,  84940.,  86580.,  73712.,  58652.,
      72955.,  102780., 135425., 137975., 140525., 118460., 93415.,  82825.,
      116500., 153275., 155825., 158375., 133300., 104965., 89108.,  124048.,
      161660., 164100., 166540., 138896., 108452., 84807.,  117292., 151925.,
      154055., 156185., 129484., 100539., 43353.,  62548.,  84155.,  85085.,
      86015.,  73876.,  59229.,  81212.,  114992., 152180., 153820., 155460.,
      131504., 104012., 132175., 185100., 242525., 245075., 247625., 207500.,
      162715., 142045., 198820., 260375., 262925., 265475., 222340., 174265.,
      146564., 203344., 264140., 266580., 269020., 223568., 173972., 135459.,
      186844., 241385., 243515., 245645., 203068., 157239.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     22.,    59.,   101.,  143.,  150.,  105.,   58.,    204.,
      454.,   610.,   766.,  684.,  434.,  238.,  644.,   1234.,  1390.,
      1546.,  1284.,  774.,  418.,  1084., 2014., 2170.,  2326.,  1884.,
      1114.,  598.,   1524., 2794., 2950., 3106., 2484.,  1454.,  623.,
      1442.,  2465.,  2579., 2693., 2034., 1139., 41.,    142.,   311.,
      497.,   683.,   558.,  333.,  370.,  924.,  1678.,  2122.,  2566.,
      1980.,  1130.,  1030., 2324., 3898., 4342., 4786.,  3540.,  1950.,
      1690.,  3724.,  6118., 6562., 7006., 5100., 2770.,  2350.,  5124.,
      8338.,  8782.,  9226., 6660., 3590., 1619., 3482.,  5597.,  5855.,
      6113.,  4362.,  2327., 77.,   262.,  563.,  893.,   1223.,  966.,
      561.,   682.,   1644., 2902., 3634., 4366., 3276.,  1826.,  1822.,
      4004.,  6562.,  7294., 8026., 5796., 3126., 2962.,  6364.,  10222.,
      10954., 11686., 8316., 4426., 4102., 8724., 13882., 14614., 15346.,
      10836., 5726.,  2615., 5522., 8729., 9131., 9533.,  6690.,  3515.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19134.,   31112.,   46210.,   53530.,   60850.,   56840.,   48942.,
      50920.,   78432.,   111640.,  124600.,  137560.,  124000.,  103720.,
      106610.,  159160.,  220750.,  240950.,  261150.,  230200.,  188930.,
      184730.,  267800.,  362150.,  382350.,  402550.,  347800.,  280490.,
      249352.,  352736.,  466680.,  486040.,  505400.,  428000.,  339016.,
      269910.,  377384.,  493930.,  510850.,  527770.,  442280.,  346950.,
      179406.,  260936.,  353650.,  360970.,  368290.,  318920.,  257598.,
      345256.,  492384.,  655960.,  668920.,  681880.,  580960.,  462568.,
      575330.,  811000.,  1069150., 1089350., 1109550., 935800.,  738290.,
      653450.,  919640.,  1210550., 1230750., 1250950., 1053400., 829850.,
      704968.,  981728.,  1279800., 1299160., 1318520., 1100000., 859144.,
      672102.,  929768.,  1204570., 1221490., 1238410., 1026920., 797526.,
      339678.,  490760.,  661090.,  668410.,  675730.,  581000.,  466254.,
      639592.,  906336.,  1200280., 1213240., 1226200., 1037920., 821416.,
      1044050., 1462840., 1917550., 1937750., 1957950., 1641400., 1287650.,
      1122170., 1571480., 2058950., 2079150., 2099350., 1759000., 1379210.,
      1160584., 1610720., 2092920., 2112280., 2131640., 1772000., 1379272.,
      1074294., 1482152., 1915210., 1932130., 1949050., 1611560., 1248102.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   394.,   706.,   1018.,  1100.,  782.,    380.,    1432.,
      3284.,  4484.,  5684.,  5144.,  3292.,  1740.,  4792.,   9284.,   10484.,
      11684., 9784.,  5932.,  3100.,  8152.,  15284., 16484.,  17684.,  14424.,
      8572.,  4460.,  11512., 21284., 22484., 23684., 19064.,  11212.,  4790.,
      11132., 19090., 19978., 20866., 15804., 8870.,  270.,    1004.,   2266.,
      3730.,  5194.,  4268.,  2558.,  2780.,  7000.,  12788.,  16292.,  19796.,
      15320., 8764.,  7980.,  18040., 30308., 33812., 37316.,  27640.,  15244.,
      13180., 29080., 47828., 51332., 54836., 39960., 21724.,  18380.,  40120.,
      65348., 68852., 72356., 52280., 28204., 12710., 27356.,  44002.,  46042.,
      48082., 34332., 18326., 510.,   1868.,  4138.,  6754.,   9370.,   7436.,
      4334.,  5180.,  12568., 22292., 28100., 33908., 25496.,  14236.,  14220.,
      31288., 51332., 57140., 62948., 45496., 24556., 23260.,  50008.,  80372.,
      86180., 91988., 65496., 34876., 32300., 68728., 109412., 115220., 121028.,
      85496., 45196., 20630., 43580., 68914., 72106., 75298.,  52860.,  27782.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      621.,   702.,   1006.,  1120.,  1490.,  1640.,  1715.,  1880.,  1940.,
      2120.,  1810.,  1960.,  1557.,  1674.,  1634.,  1784.,  2512.,  2720.,
      3570.,  3840.,  3970.,  4260.,  4370.,  4680.,  3936.,  4192.,  3290.,
      3488.,  3400.,  3640.,  5070.,  5400.,  7025.,  7450.,  7650.,  8100.,
      8275.,  8750.,  7290.,  7680.,  5980.,  6280.,  5815.,  6160.,  8430.,
      8900.,  11400., 12000., 12025., 12650., 12650., 13300., 10930., 11460.,
      8815.,  9220.,  7838.,  8156.,  11088., 11520., 14670., 15220., 15270.,
      15840., 15870., 16460., 13440., 13920., 10646., 11012., 8478.,  8748.,
      11854., 12220., 15515., 15980., 16040., 16520., 16565., 17060., 13882.,
      14284., 10890., 11196., 5535.,  5994.,  8062.,  8680.,  10940., 11720.,
      11165., 11960., 11390., 12200., 9874.,  10528., 7983.,  8478.,  10706.,
      11360., 15280., 16160., 20370., 21480., 20770., 21900., 21170., 22320.,
      18048., 18976., 14378., 15080., 17890., 18760., 25230., 26400., 33275.,
      34750., 33900., 35400., 34525., 36050., 29130., 30360., 22990., 23920.,
      20305., 21280., 28590., 29900., 37650., 39300., 38275., 39950., 38900.,
      40600., 32770., 34140., 25825., 26860., 21950., 22772., 30576., 31680.,
      39870., 41260., 40470., 41880., 41070., 42500., 34272., 35424., 26774.,
      27644., 20952., 21600., 28990., 29860., 37565., 38660., 38090., 39200.,
      38615., 39740., 32026., 32932., 24876., 25560., 10449., 11286., 15118.,
      16240., 20390., 21800., 20615., 22040., 20840., 22280., 17938., 19096.,
      14409., 15282., 19778., 20936., 28048., 29600., 37170., 39120., 37570.,
      39540., 37970., 39960., 32160., 33760., 25466., 26672., 32380., 33880.,
      45390., 47400., 59525., 62050., 60150., 62700., 60775., 63350., 50970.,
      53040., 40000., 41560., 34795., 36400., 48750., 50900., 63900., 66600.,
      64525., 67250., 65150., 67900., 54610., 56820., 42835., 44500., 36062.,
      37388., 50064., 51840., 65070., 67300., 65670., 67920., 66270., 68540.,
      55104., 56928., 42902., 44276., 33426., 34452., 46126., 47500., 59615.,
      61340., 60140., 61880., 60665., 62420., 50170., 51580., 38862., 39924.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    14.,   20.,   26.,   32.,   38.,   44.,
      39.,   44.,   27.,   30.,   15.,   20.,   52.,   64.,   115.,  136.,
      157.,  178.,  199.,  220.,  176.,  192.,  111.,  120.,  65.,   70.,
      172.,  184.,  325.,  346.,  367.,  388.,  409.,  430.,  336.,  352.,
      201.,  210.,  115.,  120.,  292.,  304.,  535.,  556.,  577.,  598.,
      619.,  640.,  496.,  512.,  291.,  300.,  165.,  170.,  412.,  424.,
      745.,  766.,  787.,  808.,  829.,  850.,  656.,  672.,  381.,  390.,
      164.,  168.,  377.,  386.,  641.,  656.,  671.,  686.,  701.,  716.,
      527.,  538.,  294.,  300.,  7.,    14.,   29.,   44.,   68.,   92.,
      116.,  140.,  164.,  188.,  135.,  152.,  81.,   90.,   87.,   104.,
      220.,  256.,  403.,  460.,  517.,  574.,  631.,  688.,  488.,  528.,
      279.,  300.,  257.,  274.,  580.,  616.,  973.,  1030., 1087., 1144.,
      1201., 1258., 888.,  928.,  489.,  510.,  427.,  444.,  940.,  976.,
      1543., 1600., 1657., 1714., 1771., 1828., 1288., 1328., 699.,  720.,
      597.,  614.,  1300., 1336., 2113., 2170., 2227., 2284., 2341., 2398.,
      1688., 1728., 909.,  930.,  410.,  420.,  881.,  902.,  1415., 1448.,
      1481., 1514., 1547., 1580., 1103., 1126., 588.,  600.,  13.,   26.,
      53.,   80.,   122.,  164.,  206.,  248.,  290.,  332.,  231.,  260.,
      135.,  150.,  159.,  188.,  388.,  448.,  691.,  784.,  877.,  970.,
      1063., 1156., 800.,  864.,  447.,  480.,  449.,  478.,  988.,  1048.,
      1621., 1714., 1807., 1900., 1993., 2086., 1440., 1504., 777.,  810.,
      739.,  768.,  1588., 1648., 2551., 2644., 2737., 2830., 2923., 3016.,
      2080., 2144., 1107., 1140., 1029., 1058., 2188., 2248., 3481., 3574.,
      3667., 3760., 3853., 3946., 2720., 2784., 1437., 1470., 656.,  672.,
      1385., 1418., 2189., 2240., 2291., 2342., 2393., 2444., 1679., 1714.,
      882.,  900.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4581.,   5211.,   7496.,   8384.,   11185.,  12355.,  12955.,  14245.,
      14725.,  16135.,  13808.,  14984.,  11925.,  12843.,  12352.,  13528.,
      19088.,  20720.,  27240.,  29360.,  30400.,  32680.,  33560.,  36000.,
      30320.,  32336.,  25408.,  26968.,  26045.,  27935.,  38960.,  41560.,
      54125.,  57475.,  59075.,  62625.,  64025.,  67775.,  56520.,  59600.,
      46445.,  48815.,  45155.,  47885.,  65560.,  69280.,  88775.,  93525.,
      93725.,  98675.,  98675.,  103825., 85360.,  89560.,  68915.,  72125.,
      61408.,  63928.,  86928.,  90352.,  115080., 119440., 119840., 124360.,
      124600., 129280., 105584., 109392., 83680.,  86584.,  66699.,  68841.,
      93296.,  96200.,  122155., 125845., 126325., 130135., 130495., 134425.,
      109400., 112592., 85851.,  88281.,  43137.,  46791.,  62936.,  67856.,
      85525.,  91735.,  87295.,  93625.,  89065.,  95515.,  77312.,  82520.,
      62577.,  66519.,  83920.,  89128.,  119888., 126896., 159960., 168800.,
      163120., 172120., 166280., 175440., 141872., 149264., 113104., 118696.,
      140705., 147635., 198560., 207880., 262025., 273775., 266975., 278925.,
      271925., 284075., 229560., 239360., 181265., 188675., 159815., 167585.,
      225160., 235600., 296675., 309825., 301625., 314975., 306575., 320125.,
      258400., 269320., 203735., 211985., 173296., 179848., 241488., 250288.,
      315000., 326080., 319760., 331000., 324520., 335920., 270896., 280080.,
      211696., 218632., 165735., 170901., 229376., 236312., 297295., 306025.,
      301465., 310315., 305635., 314605., 253544., 260768., 196983., 202437.,
      81693.,  88371.,  118376., 127328., 159865., 171115., 161635., 173005.,
      163405., 174895., 140816., 150056., 113229., 120195., 155488., 164728.,
      220688., 233072., 292680., 308240., 295840., 311560., 299000., 314880.,
      253424., 266192., 200800., 210424., 255365., 267335., 358160., 374200.,
      469925., 490075., 474875., 495225., 479825., 500375., 402600., 419120.,
      316085., 328535., 274475., 287285., 384760., 401920., 504575., 526125.,
      509525., 531275., 514475., 536425., 431440., 449080., 338555., 351845.,
      285184., 295768., 396048., 410224., 514920., 532720., 519680., 537640.,
      524440., 542560., 436208., 450768., 339712., 350680., 264771., 272961.,
      365456., 376424., 472435., 486205., 476605., 490495., 480775., 494785.,
      397688., 408944., 308115., 316593.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    85.,    127.,   169.,   211.,   253.,
      295.,   272.,   308.,   193.,   215.,   88.,    124.,   340.,   428.,
      788.,   944.,   1100.,  1256.,  1412.,  1568.,  1276.,  1396.,  816.,
      884.,   448.,   484.,   1220.,  1308.,  2348.,  2504.,  2660.,  2816.,
      2972.,  3128.,  2476.,  2596.,  1496.,  1564.,  808.,   844.,   2100.,
      2188.,  3908.,  4064.,  4220.,  4376.,  4532.,  4688.,  3676.,  3796.,
      2176.,  2244.,  1168.,  1204.,  2980.,  3068.,  5468.,  5624.,  5780.,
      5936.,  6092.,  6248.,  4876.,  4996.,  2856.,  2924.,  1223.,  1253.,
      2832.,  2900.,  4843.,  4957.,  5071.,  5185.,  5299.,  5413.,  4004.,
      4088.,  2243.,  2289.,  41.,    95.,    196.,   312.,   481.,   667.,
      853.,   1039.,  1225.,  1411.,  1016.,  1148.,  613.,   683.,   640.,
      772.,   1636.,  1916.,  3020.,  3464.,  3908.,  4352.,  4796.,  5240.,
      3724.,  4036.,  2136.,  2300.,  1960.,  2092.,  4436.,  4716.,  7460.,
      7904.,  8348.,  8792.,  9236.,  9680.,  6844.,  7156.,  3776.,  3940.,
      3280.,  3412.,  7236.,  7516.,  11900., 12344., 12788., 13232., 13676.,
      14120., 9964.,  10276., 5416.,  5580.,  4600.,  4732.,  10036., 10316.,
      16340., 16784., 17228., 17672., 18116., 18560., 13084., 13396., 7056.,
      7220.,  3179.,  3257.,  6840.,  7004.,  10999., 11257., 11515., 11773.,
      12031., 12289., 8588.,  8768.,  4583.,  4677.,  77.,    179.,   364.,
      576.,   877.,   1207.,  1537.,  1867.,  2197.,  2527.,  1760.,  1988.,
      1033.,  1151.,  1192.,  1420.,  2932.,  3404.,  5252.,  5984.,  6716.,
      7448.,  8180.,  8912.,  6172.,  6676.,  3456.,  3716.,  3472.,  3700.,
      7652.,  8124.,  12572., 13304., 14036., 14768., 15500., 16232., 11212.,
      11716., 6056.,  6316.,  5752.,  5980.,  12372., 12844., 19892., 20624.,
      21356., 22088., 22820., 23552., 16252., 16756., 8656.,  8916.,  8032.,
      8260.,  17092., 17564., 27212., 27944., 28676., 29408., 30140., 30872.,
      21292., 21796., 11256., 11516., 5135.,  5261.,  10848., 11108., 17155.,
      17557., 17959., 18361., 18763., 19165., 13172., 13448., 6923.,  7065.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      35118.,   40086.,   57784.,   64792.,   86570.,   95810.,   100610.,
      110810.,  114650.,  125810.,  107800.,  117112.,  93294.,   100566.,
      95960.,   105272.,  148704.,  161632.,  212680.,  229480.,  237800.,
      255880.,  262920.,  282280.,  237920.,  253920.,  199640.,  212024.,
      203770.,  218770.,  305320.,  325960.,  424750.,  451350.,  464150.,
      492350.,  503550.,  533350.,  445000.,  469480.,  366010.,  384850.,
      355810.,  377530.,  517000.,  546600.,  700550.,  738350.,  739950.,
      779350.,  779350.,  820350.,  674600.,  708040.,  544930.,  570490.,
      486104.,  506168.,  688352.,  715616.,  911560.,  946280.,  949480.,
      985480.,  987400.,  1024680., 836960.,  867296.,  663512.,  686648.,
      529110.,  546174.,  740248.,  763384.,  969410.,  998810.,  1002650.,
      1033010., 1035890., 1067210., 868600.,  894040.,  681750.,  701118.,
      340542.,  369702.,  497272.,  536536.,  676250.,  725810.,  690290.,
      740810.,  704330.,  755810.,  611800.,  653368.,  495486.,  526950.,
      664472.,  706040.,  949728.,  1005664., 1267720., 1338280., 1292840.,
      1364680., 1317960., 1391080., 1124960., 1183968., 897176.,  941816.,
      1116010., 1171330., 1575400., 1649800., 2079550., 2173350., 2118950.,
      2214350., 2158350., 2255350., 1822600., 1900840., 1439530., 1498690.,
      1268050., 1330090., 1787080., 1870440., 2355350., 2460350., 2394750.,
      2501350., 2434150., 2542350., 2052200., 2139400., 1618450., 1684330.,
      1377176., 1429496., 1919456., 1989728., 2504200., 2592680., 2542120.,
      2631880., 2580040., 2671080., 2154080., 2227424., 1683608., 1739000.,
      1318374., 1359630., 1824856., 1880248., 2365490., 2435210., 2398730.,
      2469410., 2431970., 2503610., 2017720., 2075416., 1567782., 1611342.,
      645966.,  699318.,  936760.,  1008280., 1265930., 1355810., 1279970.,
      1370810., 1294010., 1385810., 1115800., 1189624., 897678.,  953334.,
      1232984., 1306808., 1750752., 1849696., 2322760., 2447080., 2347880.,
      2473480., 2373000., 2499880., 2012000., 2114016., 1594712., 1671608.,
      2028250., 2123890., 2845480., 2973640., 3734350., 3895350., 3773750.,
      3936350., 3813150., 3977350., 3200200., 3332200., 2513050., 2612530.,
      2180290., 2282650., 3057160., 3194280., 4010150., 4182350., 4049550.,
      4223350., 4088950., 4264350., 3429800., 3570760., 2691970., 2798170.,
      2268248., 2352824., 3150560., 3263840., 4096840., 4239080., 4134760.,
      4278280., 4172680., 4317480., 3471200., 3587552., 2703704., 2791352.,
      2107638., 2173086., 2909464., 2997112., 3761570., 3871610., 3794810.,
      3905810., 3828050., 3940010., 3166840., 3256792., 2453814., 2521566.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,    324.,    578.,    890.,    1202.,   1514.,
      1826.,   2138.,   2020.,   2292.,   1454.,   1622.,   580.,    852.,
      2424.,   3096.,   5788.,   6988.,   8188.,   9388.,   10588.,  11788.,
      9688.,   10616.,  6244.,   6772.,   3300.,   3572.,   9144.,   9816.,
      17788.,  18988.,  20188.,  21388.,  22588.,  23788.,  18968.,  19896.,
      11524.,  12052.,  6020.,   6292.,   15864.,  16536.,  29788.,  30988.,
      32188.,  33388.,  34588.,  35788.,  28248.,  29176.,  16804.,  17332.,
      8740.,   9012.,   22584.,  23256.,  41788.,  42988.,  44188.,  45388.,
      46588.,  47788.,  37528.,  38456.,  22084.,  22612.,  9430.,   9662.,
      21924.,  22452.,  37610.,  38498.,  39386.,  40274.,  41162.,  42050.,
      31188.,  31844.,  17510.,  17870.,  270.,    694.,    1428.,   2340.,
      3602.,   5066.,   6530.,   7994.,   9458.,   10922.,  7876.,   8916.,
      4766.,   5318.,   4900.,   5940.,   12600.,  14808.,  23356.,  26860.,
      30364.,  33868.,  37372.,  40876.,  29080.,  31544.,  16708.,  18004.,
      15300.,  16340.,  34680.,  36888.,  58396.,  61900.,  65404.,  68908.,
      72412.,  75916.,  53720.,  56184.,  29668.,  30964.,  25700.,  26740.,
      56760.,  58968.,  93436.,  96940.,  100444., 103948., 107452., 110956.,
      78360.,  80824.,  42628.,  43924.,  36100.,  37140.,  78840.,  81048.,
      128476., 131980., 135484., 138988., 142492., 145996., 103000., 105464.,
      55588.,  56884.,  25030.,  25646.,  53892.,  55188.,  86714.,  88754.,
      90794.,  92834.,  94874.,  96914.,  67764.,  69188.,  36182.,  36926.,
      510.,    1318.,   2676.,   4356.,   6626.,   9242.,   11858.,  14474.,
      17090.,  19706.,  13732.,  15540.,  8078.,   9014.,   9220.,   11028.,
      22776.,  26520.,  40924.,  46732.,  52540.,  58348.,  64156.,  69964.,
      48472.,  52472.,  27172.,  29236.,  27300.,  29108.,  60216.,  63960.,
      99004.,  104812., 110620., 116428., 122236., 128044., 88472.,  92472.,
      47812.,  49876.,  45380.,  47188.,  97656.,  101400., 157084., 162892.,
      168700., 174508., 180316., 186124., 128472., 132472., 68452.,  70516.,
      63460.,  65268.,  135096., 138840., 215164., 220972., 226780., 232588.,
      238396., 244204., 168472., 172472., 89092.,  91156.,  40630.,  41630.,
      85860.,  87924.,  135818., 139010., 142202., 145394., 148586., 151778.,
      104340., 106532., 54854.,  55982.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1161.,   1242.,   1323.,   1404.,   1898.,   2012.,   2126.,   2240.,
      2830.,   2980.,   3130.,   3280.,   3265.,   3430.,   3595.,   3760.,
      3700.,   3880.,   4060.,   4240.,   3470.,   3620.,   3770.,   3920.,
      2997.,   3114.,   3231.,   3348.,   3118.,   3268.,   3418.,   3568.,
      4816.,   5024.,   5232.,   5440.,   6870.,   7140.,   7410.,   7680.,
      7650.,   7940.,   8230.,   8520.,   8430.,   8740.,   9050.,   9360.,
      7616.,   7872.,   8128.,   8384.,   6382.,   6580.,   6778.,   6976.,
      6560.,   6800.,   7040.,   7280.,   9810.,   10140.,  10470.,  10800.,
      13625.,  14050.,  14475.,  14900.,  14850.,  15300.,  15750.,  16200.,
      16075.,  16550.,  17025.,  17500.,  14190.,  14580.,  14970.,  15360.,
      11660.,  11960.,  12260.,  12560.,  11285.,  11630.,  11975.,  12320.,
      16390.,  16860.,  17330.,  17800.,  22200.,  22800.,  23400.,  24000.,
      23425.,  24050.,  24675.,  25300.,  24650.,  25300.,  25950.,  26600.,
      21330.,  21860.,  22390.,  22920.,  17225.,  17630.,  18035.,  18440.,
      15358.,  15676.,  15994.,  16312.,  21744.,  22176.,  22608.,  23040.,
      28790.,  29340.,  29890.,  30440.,  29970.,  30540.,  31110.,  31680.,
      31150.,  31740.,  32330.,  32920.,  26400.,  26880.,  27360.,  27840.,
      20926.,  21292.,  21658.,  22024.,  16686.,  16956.,  17226.,  17496.,
      23342.,  23708.,  24074.,  24440.,  30565.,  31030.,  31495.,  31960.,
      31600.,  32080.,  32560.,  33040.,  32635.,  33130.,  33625.,  34120.,
      27362.,  27764.,  28166.,  28568.,  21474.,  21780.,  22086.,  22392.,
      10611.,  11070.,  11529.,  11988.,  15506.,  16124.,  16742.,  17360.,
      21100.,  21880.,  22660.,  23440.,  21535.,  22330.,  23125.,  23920.,
      21970.,  22780.,  23590.,  24400.,  19094.,  19748.,  20402.,  21056.,
      15471.,  15966.,  16461.,  16956.,  20758.,  21412.,  22066.,  22720.,
      29680.,  30560.,  31440.,  32320.,  39630.,  40740.,  41850.,  42960.,
      40410.,  41540.,  42670.,  43800.,  41190.,  42340.,  43490.,  44640.,
      35168.,  36096.,  37024.,  37952.,  28054.,  28756.,  29458.,  30160.,
      34910.,  35780.,  36650.,  37520.,  49290.,  50460.,  51630.,  52800.,
      65075.,  66550.,  68025.,  69500.,  66300.,  67800.,  69300.,  70800.,
      67525.,  69050.,  70575.,  72100.,  57030.,  58260.,  59490.,  60720.,
      45050.,  45980.,  46910.,  47840.,  39635.,  40610.,  41585.,  42560.,
      55870.,  57180.,  58490.,  59800.,  73650.,  75300.,  76950.,  78600.,
      74875.,  76550.,  78225.,  79900.,  76100.,  77800.,  79500.,  81200.,
      64170.,  65540.,  66910.,  68280.,  50615.,  51650.,  52685.,  53720.,
      43078.,  43900.,  44722.,  45544.,  60048.,  61152.,  62256.,  63360.,
      78350.,  79740.,  81130.,  82520.,  79530.,  80940.,  82350.,  83760.,
      80710.,  82140.,  83570.,  85000.,  67392.,  68544.,  69696.,  70848.,
      52678.,  53548.,  54418.,  55288.,  41256.,  41904.,  42552.,  43200.,
      57110.,  57980.,  58850.,  59720.,  74035.,  75130.,  76225.,  77320.,
      75070.,  76180.,  77290.,  78400.,  76105.,  77230.,  78355.,  79480.,
      63146.,  64052.,  64958.,  65864.,  49068.,  49752.,  50436.,  51120.,
      20061.,  20898.,  21735.,  22572.,  29114.,  30236.,  31358.,  32480.,
      39370.,  40780.,  42190.,  43600.,  39805.,  41230.,  42655.,  44080.,
      40240.,  41680.,  43120.,  44560.,  34718.,  35876.,  37034.,  38192.,
      27945.,  28818.,  29691.,  30564.,  38398.,  39556.,  40714.,  41872.,
      54544.,  56096.,  57648.,  59200.,  72390.,  74340.,  76290.,  78240.,
      73170.,  75140.,  77110.,  79080.,  73950.,  75940.,  77930.,  79920.,
      62720.,  64320.,  65920.,  67520.,  49726.,  50932.,  52138.,  53344.,
      63260.,  64760.,  66260.,  67760.,  88770.,  90780.,  92790.,  94800.,
      116525., 119050., 121575., 124100., 117750., 120300., 122850., 125400.,
      118975., 121550., 124125., 126700., 99870.,  101940., 104010., 106080.,
      78440.,  80000.,  81560.,  83120.,  67985.,  69590.,  71195.,  72800.,
      95350.,  97500.,  99650.,  101800., 125100., 127800., 130500., 133200.,
      126325., 129050., 131775., 134500., 127550., 130300., 133050., 135800.,
      107010., 109220., 111430., 113640., 84005.,  85670.,  87335.,  89000.,
      70798.,  72124.,  73450.,  74776.,  98352.,  100128., 101904., 103680.,
      127910., 130140., 132370., 134600., 129090., 131340., 133590., 135840.,
      130270., 132540., 134810., 137080., 108384., 110208., 112032., 113856.,
      84430.,  85804.,  87178.,  88552.,  65826.,  66852.,  67878.,  68904.,
      90878.,  92252.,  93626.,  95000.,  117505., 119230., 120955., 122680.,
      118540., 120280., 122020., 123760., 119575., 121330., 123085., 124840.,
      98930.,  100340., 101750., 103160., 76662.,  77724.,  78786.,  79848.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   22.,   28.,
      34.,   40.,   46.,   52.,   58.,   64.,   70.,   76.,   82.,   88.,
      73.,   78.,   83.,   88.,   51.,   54.,   57.,   60.,   25.,   30.,
      35.,   40.,   92.,   104.,  116.,  128.,  209.,  230.,  251.,  272.,
      293.,  314.,  335.,  356.,  377.,  398.,  419.,  440.,  336.,  352.,
      368.,  384.,  213.,  222.,  231.,  240.,  125.,  130.,  135.,  140.,
      332.,  344.,  356.,  368.,  629.,  650.,  671.,  692.,  713.,  734.,
      755.,  776.,  797.,  818.,  839.,  860.,  656.,  672.,  688.,  704.,
      393.,  402.,  411.,  420.,  225.,  230.,  235.,  240.,  572.,  584.,
      596.,  608.,  1049., 1070., 1091., 1112., 1133., 1154., 1175., 1196.,
      1217., 1238., 1259., 1280., 976.,  992.,  1008., 1024., 573.,  582.,
      591.,  600.,  325.,  330.,  335.,  340.,  812.,  824.,  836.,  848.,
      1469., 1490., 1511., 1532., 1553., 1574., 1595., 1616., 1637., 1658.,
      1679., 1700., 1296., 1312., 1328., 1344., 753.,  762.,  771.,  780.,
      324.,  328.,  332.,  336.,  745.,  754.,  763.,  772.,  1267., 1282.,
      1297., 1312., 1327., 1342., 1357., 1372., 1387., 1402., 1417., 1432.,
      1043., 1054., 1065., 1076., 582.,  588.,  594.,  600.,  7.,    14.,
      21.,   28.,   43.,   58.,   73.,   88.,   112.,  136.,  160.,  184.,
      208.,  232.,  256.,  280.,  304.,  328.,  352.,  376.,  253.,  270.,
      287.,  304.,  153.,  162.,  171.,  180.,  157.,  174.,  191.,  208.,
      404.,  440.,  476.,  512.,  749.,  806.,  863.,  920.,  977.,  1034.,
      1091., 1148., 1205., 1262., 1319., 1376., 936.,  976.,  1016., 1056.,
      537.,  558.,  579.,  600.,  497.,  514.,  531.,  548.,  1124., 1160.,
      1196., 1232., 1889., 1946., 2003., 2060., 2117., 2174., 2231., 2288.,
      2345., 2402., 2459., 2516., 1736., 1776., 1816., 1856., 957.,  978.,
      999.,  1020., 837.,  854.,  871.,  888.,  1844., 1880., 1916., 1952.,
      3029., 3086., 3143., 3200., 3257., 3314., 3371., 3428., 3485., 3542.,
      3599., 3656., 2536., 2576., 2616., 2656., 1377., 1398., 1419., 1440.,
      1177., 1194., 1211., 1228., 2564., 2600., 2636., 2672., 4169., 4226.,
      4283., 4340., 4397., 4454., 4511., 4568., 4625., 4682., 4739., 4796.,
      3336., 3376., 3416., 3456., 1797., 1818., 1839., 1860., 810.,  820.,
      830.,  840.,  1741., 1762., 1783., 1804., 2797., 2830., 2863., 2896.,
      2929., 2962., 2995., 3028., 3061., 3094., 3127., 3160., 2183., 2206.,
      2229., 2252., 1164., 1176., 1188., 1200., 13.,   26.,   39.,   52.,
      79.,   106.,  133.,  160.,  202.,  244.,  286.,  328.,  370.,  412.,
      454.,  496.,  538.,  580.,  622.,  664.,  433.,  462.,  491.,  520.,
      255.,  270.,  285.,  300.,  289.,  318.,  347.,  376.,  716.,  776.,
      836.,  896.,  1289., 1382., 1475., 1568., 1661., 1754., 1847., 1940.,
      2033., 2126., 2219., 2312., 1536., 1600., 1664., 1728., 861.,  894.,
      927.,  960.,  869.,  898.,  927.,  956.,  1916., 1976., 2036., 2096.,
      3149., 3242., 3335., 3428., 3521., 3614., 3707., 3800., 3893., 3986.,
      4079., 4172., 2816., 2880., 2944., 3008., 1521., 1554., 1587., 1620.,
      1449., 1478., 1507., 1536., 3116., 3176., 3236., 3296., 5009., 5102.,
      5195., 5288., 5381., 5474., 5567., 5660., 5753., 5846., 5939., 6032.,
      4096., 4160., 4224., 4288., 2181., 2214., 2247., 2280., 2029., 2058.,
      2087., 2116., 4316., 4376., 4436., 4496., 6869., 6962., 7055., 7148.,
      7241., 7334., 7427., 7520., 7613., 7706., 7799., 7892., 5376., 5440.,
      5504., 5568., 2841., 2874., 2907., 2940., 1296., 1312., 1328., 1344.,
      2737., 2770., 2803., 2836., 4327., 4378., 4429., 4480., 4531., 4582.,
      4633., 4684., 4735., 4786., 4837., 4888., 3323., 3358., 3393., 3428.,
      1746., 1764., 1782., 1800.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8685.,    9315.,    9945.,    10575.,   14320.,   15208.,   16096.,
      16984.,   21485.,   22655.,   23825.,   24995.,   24935.,   26225.,
      27515.,   28805.,   28385.,   29795.,   31205.,   32615.,   26728.,
      27904.,   29080.,   30256.,   23157.,   24075.,   24993.,   25911.,
      23816.,   24992.,   26168.,   27344.,   36944.,   38576.,   40208.,
      41840.,   52880.,   55000.,   57120.,   59240.,   59080.,   61360.,
      63640.,   65920.,   65280.,   67720.,   70160.,   72600.,   59120.,
      61136.,   63152.,   65168.,   49640.,   51200.,   52760.,   54320.,
      50665.,   52555.,   54445.,   56335.,   75960.,   78560.,   81160.,
      83760.,   105725.,  109075.,  112425.,  115775.,  115475.,  119025.,
      122575.,  126125.,  125225.,  128975.,  132725.,  136475.,  110720.,
      113800.,  116880.,  119960.,  91105.,   93475.,   95845.,   98215.,
      88255.,   90985.,   93715.,   96445.,   128320.,  132040.,  135760.,
      139480.,  173975.,  178725.,  183475.,  188225.,  183725.,  188675.,
      193625.,  198575.,  193475.,  198625.,  203775.,  208925.,  167560.,
      171760.,  175960.,  180160.,  135415.,  138625.,  141835.,  145045.,
      120920.,  123440.,  125960.,  128480.,  171280.,  174704.,  178128.,
      181552.,  226880.,  231240.,  235600.,  239960.,  236280.,  240800.,
      245320.,  249840.,  245680.,  250360.,  255040.,  259720.,  208304.,
      212112.,  215920.,  219728.,  165176.,  168080.,  170984.,  173888.,
      131787.,  133929.,  136071.,  138213.,  184408.,  187312.,  190216.,
      193120.,  241535.,  245225.,  248915.,  252605.,  249785.,  253595.,
      257405.,  261215.,  258035.,  261965.,  265895.,  269825.,  216400.,
      219592.,  222784.,  225976.,  169875.,  172305.,  174735.,  177165.,
      83529.,   87183.,   90837.,   94491.,   122176.,  127096.,  132016.,
      136936.,  166385.,  172595.,  178805.,  185015.,  169835.,  176165.,
      182495.,  188825.,  173285.,  179735.,  186185.,  192635.,  150712.,
      155920.,  161128.,  166336.,  122193.,  126135.,  130077.,  134019.,
      163928.,  169136.,  174344.,  179552.,  234512.,  241520.,  248528.,
      255536.,  313280.,  322120.,  330960.,  339800.,  319480.,  328480.,
      337480.,  346480.,  325680.,  334840.,  344000.,  353160.,  278192.,
      285584.,  292976.,  300368.,  222008.,  227600.,  233192.,  238784.,
      276205.,  283135.,  290065.,  296995.,  390120.,  399440.,  408760.,
      418080.,  515225.,  526975.,  538725.,  550475.,  524975.,  536925.,
      548875.,  560825.,  534725.,  546875.,  559025.,  571175.,  451760.,
      461560.,  471360.,  481160.,  356965.,  364375.,  371785.,  379195.,
      313795.,  321565.,  329335.,  337105.,  442480.,  452920.,  463360.,
      473800.,  583475.,  596625.,  609775.,  622925.,  593225.,  606575.,
      619925.,  633275.,  602975.,  616525.,  630075.,  643625.,  508600.,
      519520.,  530440.,  541360.,  401275.,  409525.,  417775.,  426025.,
      341672.,  348224.,  354776.,  361328.,  476368.,  485168.,  493968.,
      502768.,  621680.,  632760.,  643840.,  654920.,  631080.,  642320.,
      653560.,  664800.,  640480.,  651880.,  663280.,  674680.,  534896.,
      544080.,  553264.,  562448.,  418184.,  425120.,  432056.,  438992.,
      327591.,  332757.,  337923.,  343089.,  453544.,  460480.,  467416.,
      474352.,  588035.,  596765.,  605495.,  614225.,  596285.,  605135.,
      613985.,  622835.,  604535.,  613505.,  622475.,  631445.,  501664.,
      508888.,  516112.,  523336.,  389871.,  395325.,  400779.,  406233.,
      158373.,  165051.,  171729.,  178407.,  230032.,  238984.,  247936.,
      256888.,  311285.,  322535.,  333785.,  345035.,  314735.,  326105.,
      337475.,  348845.,  318185.,  329675.,  341165.,  352655.,  274696.,
      283936.,  293176.,  302416.,  221229.,  228195.,  235161.,  242127.,
      304040.,  313280.,  322520.,  331760.,  432080.,  444464.,  456848.,
      469232.,  573680.,  589240.,  604800.,  620360.,  579880.,  595600.,
      611320.,  627040.,  586080.,  601960.,  617840.,  633720.,  497264.,
      510032.,  522800.,  535568.,  394376.,  404000.,  413624.,  423248.,
      501745.,  513715.,  525685.,  537655.,  704280.,  720320.,  736360.,
      752400.,  924725.,  944875.,  965025.,  985175.,  934475.,  954825.,
      975175.,  995525.,  944225.,  964775.,  985325.,  1005875., 792800.,
      809320.,  825840.,  842360.,  622825.,  635275.,  647725.,  660175.,
      539335.,  552145.,  564955.,  577765.,  756640.,  773800.,  790960.,
      808120.,  992975.,  1014525., 1036075., 1057625., 1002725., 1024475.,
      1046225., 1067975., 1012475., 1034425., 1056375., 1078325., 849640.,
      867280.,  884920.,  902560.,  667135.,  680425.,  693715.,  707005.,
      562424.,  573008.,  583592.,  594176.,  781456.,  795632.,  809808.,
      823984.,  1016480., 1034280., 1052080., 1069880., 1025880., 1043840.,
      1061800., 1079760., 1035280., 1053400., 1071520., 1089640., 861488.,
      876048.,  890608.,  905168.,  671192.,  682160.,  693128.,  704096.,
      523395.,  531585.,  539775.,  547965.,  722680.,  733648.,  744616.,
      755584.,  934535.,  948305.,  962075.,  975845.,  942785.,  956675.,
      970565.,  984455.,  951035.,  965045.,  979055.,  993065.,  786928.,
      798184.,  809440.,  820696.,  609867.,  618345.,  626823.,  635301.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   137.,
      179.,   221.,   263.,   305.,   347.,   389.,   431.,   473.,   515.,
      557.,   599.,   516.,   552.,   588.,   624.,   369.,   391.,   413.,
      435.,   148.,   184.,   220.,   256.,   612.,   700.,   788.,   876.,
      1456.,  1612.,  1768.,  1924.,  2080.,  2236.,  2392.,  2548.,  2704.,
      2860.,  3016.,  3172.,  2460.,  2580.,  2700.,  2820.,  1580.,  1648.,
      1716.,  1784.,  868.,   904.,   940.,   976.,   2372.,  2460.,  2548.,
      2636.,  4576.,  4732.,  4888.,  5044.,  5200.,  5356.,  5512.,  5668.,
      5824.,  5980.,  6136.,  6292.,  4860.,  4980.,  5100.,  5220.,  2940.,
      3008.,  3076.,  3144.,  1588.,  1624.,  1660.,  1696.,  4132.,  4220.,
      4308.,  4396.,  7696.,  7852.,  8008.,  8164.,  8320.,  8476.,  8632.,
      8788.,  8944.,  9100.,  9256.,  9412.,  7260.,  7380.,  7500.,  7620.,
      4300.,  4368.,  4436.,  4504.,  2308.,  2344.,  2380.,  2416.,  5892.,
      5980.,  6068.,  6156.,  10816., 10972., 11128., 11284., 11440., 11596.,
      11752., 11908., 12064., 12220., 12376., 12532., 9660.,  9780.,  9900.,
      10020., 5660.,  5728.,  5796.,  5864.,  2423.,  2453.,  2483.,  2513.,
      5612.,  5680.,  5748.,  5816.,  9599.,  9713.,  9827.,  9941.,  10055.,
      10169., 10283., 10397., 10511., 10625., 10739., 10853., 7944.,  8028.,
      8112.,  8196.,  4451.,  4497.,  4543.,  4589.,  41.,    95.,    149.,
      203.,   304.,   420.,   536.,   652.,   821.,   1007.,  1193.,  1379.,
      1565.,  1751.,  1937.,  2123.,  2309.,  2495.,  2681.,  2867.,  1932.,
      2064.,  2196.,  2328.,  1173.,  1243.,  1313.,  1383.,  1180.,  1312.,
      1444.,  1576.,  3060.,  3340.,  3620.,  3900.,  5704.,  6148.,  6592.,
      7036.,  7480.,  7924.,  8368.,  8812.,  9256.,  9700.,  10144., 10588.,
      7212.,  7524.,  7836.,  8148.,  4148.,  4312.,  4476.,  4640.,  3820.,
      3952.,  4084.,  4216.,  8660.,  8940.,  9220.,  9500.,  14584., 15028.,
      15472., 15916., 16360., 16804., 17248., 17692., 18136., 18580., 19024.,
      19468., 13452., 13764., 14076., 14388., 7428.,  7592.,  7756.,  7920.,
      6460.,  6592.,  6724.,  6856.,  14260., 14540., 14820., 15100., 23464.,
      23908., 24352., 24796., 25240., 25684., 26128., 26572., 27016., 27460.,
      27904., 28348., 19692., 20004., 20316., 20628., 10708., 10872., 11036.,
      11200., 9100.,  9232.,  9364.,  9496.,  19860., 20140., 20420., 20700.,
      32344., 32788., 33232., 33676., 34120., 34564., 35008., 35452., 35896.,
      36340., 36784., 37228., 25932., 26244., 26556., 26868., 13988., 14152.,
      14316., 14480., 6299.,  6377.,  6455.,  6533.,  13556., 13720., 13884.,
      14048., 21803., 22061., 22319., 22577., 22835., 23093., 23351., 23609.,
      23867., 24125., 24383., 24641., 17040., 17220., 17400., 17580., 9095.,
      9189.,  9283.,  9377.,  77.,    179.,   281.,   383.,   568.,   780.,
      992.,   1204.,  1505.,  1835.,  2165.,  2495.,  2825.,  3155.,  3485.,
      3815.,  4145.,  4475.,  4805.,  5135.,  3348.,  3576.,  3804.,  4032.,
      1977.,  2095.,  2213.,  2331.,  2212.,  2440.,  2668.,  2896.,  5508.,
      5980.,  6452.,  6924.,  9952.,  10684., 11416., 12148., 12880., 13612.,
      14344., 15076., 15808., 16540., 17272., 18004., 11964., 12468., 12972.,
      13476., 6716.,  6976.,  7236.,  7496.,  6772.,  7000.,  7228.,  7456.,
      14948., 15420., 15892., 16364., 24592., 25324., 26056., 26788., 27520.,
      28252., 28984., 29716., 30448., 31180., 31912., 32644., 22044., 22548.,
      23052., 23556., 11916., 12176., 12436., 12696., 11332., 11560., 11788.,
      12016., 24388., 24860., 25332., 25804., 39232., 39964., 40696., 41428.,
      42160., 42892., 43624., 44356., 45088., 45820., 46552., 47284., 32124.,
      32628., 33132., 33636., 17116., 17376., 17636., 17896., 15892., 16120.,
      16348., 16576., 33828., 34300., 34772., 35244., 53872., 54604., 55336.,
      56068., 56800., 57532., 58264., 58996., 59728., 60460., 61192., 61924.,
      42204., 42708., 43212., 43716., 22316., 22576., 22836., 23096., 10175.,
      10301., 10427., 10553., 21500., 21760., 22020., 22280., 34007., 34409.,
      34811., 35213., 35615., 36017., 36419., 36821., 37223., 37625., 38027.,
      38429., 26136., 26412., 26688., 26964., 13739., 13881., 14023., 14165.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67086.,   72054.,   77022.,   81990.,   111128.,  118136.,  125144.,
      132152.,  167290.,  176530.,  185770.,  195010.,  194770.,  204970.,
      215170.,  225370.,  222250.,  233410.,  244570.,  255730.,  209720.,
      219032.,  228344.,  237656.,  181998.,  189270.,  196542.,  203814.,
      186040.,  195352.,  204664.,  213976.,  289248.,  302176.,  315104.,
      328032.,  414760.,  431560.,  448360.,  465160.,  464200.,  482280.,
      500360.,  518440.,  513640.,  533000.,  552360.,  571720.,  465760.,
      481760.,  497760.,  513760.,  391480.,  403864.,  416248.,  428632.,
      398090.,  413090.,  428090.,  443090.,  597640.,  618280.,  638920.,
      659560.,  832750.,  859350.,  885950.,  912550.,  910550.,  938750.,
      966950.,  995150.,  988350.,  1018150., 1047950., 1077750., 874600.,
      899080.,  923560.,  948040.,  720170.,  739010.,  757850.,  776690.,
      697970.,  719690.,  741410.,  763130.,  1015400., 1045000., 1074600.,
      1104200., 1377350., 1415150., 1452950., 1490750., 1455150., 1494550.,
      1533950., 1573350., 1532950., 1573950., 1614950., 1655950., 1328200.,
      1361640., 1395080., 1428520., 1073810., 1099370., 1124930., 1150490.,
      959608.,  979672.,  999736.,  1019800., 1359584., 1386848., 1414112.,
      1441376., 1801320., 1836040., 1870760., 1905480., 1876360., 1912360.,
      1948360., 1984360., 1951400., 1988680., 2025960., 2063240., 1654880.,
      1685216., 1715552., 1745888., 1312504., 1335640., 1358776., 1381912.,
      1047510., 1064574., 1081638., 1098702., 1465976., 1489112., 1512248.,
      1535384., 1920370., 1949770., 1979170., 2008570., 1986250., 2016610.,
      2046970., 2077330., 2052130., 2083450., 2114770., 2146090., 1721240.,
      1746680., 1772120., 1797560., 1351350., 1370718., 1390086., 1409454.,
      662814.,  691974.,  721134.,  750294.,  969944.,  1009208., 1048472.,
      1087736., 1321450., 1371010., 1420570., 1470130., 1348930., 1399450.,
      1449970., 1500490., 1376410., 1427890., 1479370., 1530850., 1197560.,
      1239128., 1280696., 1322264., 971262.,  1002726., 1034190., 1065654.,
      1302904., 1344472., 1386040., 1427608., 1864416., 1920352., 1976288.,
      2032224., 2491240., 2561800., 2632360., 2702920., 2540680., 2612520.,
      2684360., 2756200., 2590120., 2663240., 2736360., 2809480., 2212960.,
      2271968., 2330976., 2389984., 1766392., 1811032., 1855672., 1900312.,
      2197370., 2252690., 2308010., 2363330., 3104200., 3178600., 3253000.,
      3327400., 4100350., 4194150., 4287950., 4381750., 4178150., 4273550.,
      4368950., 4464350., 4255950., 4352950., 4449950., 4546950., 3596200.,
      3674440., 3752680., 3830920., 2842010., 2901170., 2960330., 3019490.,
      2497250., 2559290., 2621330., 2683370., 3521960., 3605320., 3688680.,
      3772040., 4644950., 4749950., 4854950., 4959950., 4722750., 4829350.,
      4935950., 5042550., 4800550., 4908750., 5016950., 5125150., 4049800.,
      4137000., 4224200., 4311400., 3195650., 3261530., 3327410., 3393290.,
      2721592., 2773912., 2826232., 2878552., 3794912., 3865184., 3935456.,
      4005728., 4953000., 5041480., 5129960., 5218440., 5028040., 5117800.,
      5207560., 5297320., 5103080., 5194120., 5285160., 5376200., 4262240.,
      4335584., 4408928., 4482272., 3332536., 3387928., 3443320., 3498712.,
      2610918., 2652174., 2693430., 2734686., 3615032., 3670424., 3725816.,
      3781208., 4687330., 4757050., 4826770., 4896490., 4753210., 4823890.,
      4894570., 4965250., 4819090., 4890730., 4962370., 5034010., 3999320.,
      4057016., 4114712., 4172408., 3108294., 3151854., 3195414., 3238974.,
      1258542., 1311894., 1365246., 1418598., 1828760., 1900280., 1971800.,
      2043320., 2475610., 2565490., 2655370., 2745250., 2503090., 2593930.,
      2684770., 2775610., 2530570., 2622370., 2714170., 2805970., 2185400.,
      2259224., 2333048., 2406872., 1760526., 1816182., 1871838., 1927494.,
      2419768., 2493592., 2567416., 2641240., 3439584., 3538528., 3637472.,
      3736416., 4567720., 4692040., 4816360., 4940680., 4617160., 4742760.,
      4868360., 4993960., 4666600., 4793480., 4920360., 5047240., 3960160.,
      4062176., 4164192., 4266208., 3141304., 3218200., 3295096., 3371992.,
      3996650., 4092290., 4187930., 4283570., 5610760., 5738920., 5867080.,
      5995240., 7367950., 7528950., 7689950., 7850950., 7445750., 7608350.,
      7770950., 7933550., 7523550., 7687750., 7851950., 8016150., 6317800.,
      6449800., 6581800., 6713800., 4963850., 5063330., 5162810., 5262290.,
      4296530., 4398890., 4501250., 4603610., 6028520., 6165640., 6302760.,
      6439880., 7912550., 8084750., 8256950., 8429150., 7990350., 8164150.,
      8337950., 8511750., 8068150., 8243550., 8418950., 8594350., 6771400.,
      6912360., 7053320., 7194280., 5317490., 5423690., 5529890., 5636090.,
      4483576., 4568152., 4652728., 4737304., 6230240., 6343520., 6456800.,
      6570080., 8104680., 8246920., 8389160., 8531400., 8179720., 8323240.,
      8466760., 8610280., 8254760., 8399560., 8544360., 8689160., 6869600.,
      6985952., 7102304., 7218656., 5352568., 5440216., 5527864., 5615512.,
      4174326., 4239774., 4305222., 4370670., 5764088., 5851736., 5939384.,
      6027032., 7454290., 7564330., 7674370., 7784410., 7520170., 7631170.,
      7742170., 7853170., 7586050., 7698010., 7809970., 7921930., 6277400.,
      6367352., 6457304., 6547256., 4865238., 4932990., 5000742., 5068494.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      946.,    1258.,   1570.,   1882.,   2194.,   2506.,   2818.,   3130.,
      3442.,   3754.,   4066.,   4378.,   3860.,   4132.,   4404.,   4676.,
      2798.,   2966.,   3134.,   3302.,   980.,    1252.,   1524.,   1796.,
      4408.,   5080.,   5752.,   6424.,   10796.,  11996.,  13196.,  14396.,
      15596.,  16796.,  17996.,  19196.,  20396.,  21596.,  22796.,  23996.,
      18776.,  19704.,  20632.,  21560.,  12148.,  12676.,  13204.,  13732.,
      6420.,   6692.,   6964.,   7236.,   17848.,  18520.,  19192.,  19864.,
      34796.,  35996.,  37196.,  38396.,  39596.,  40796.,  41996.,  43196.,
      44396.,  45596.,  46796.,  47996.,  37336.,  38264.,  39192.,  40120.,
      22708.,  23236.,  23764.,  24292.,  11860.,  12132.,  12404.,  12676.,
      31288.,  31960.,  32632.,  33304.,  58796.,  59996.,  61196.,  62396.,
      63596.,  64796.,  65996.,  67196.,  68396.,  69596.,  70796.,  71996.,
      55896.,  56824.,  57752.,  58680.,  33268.,  33796.,  34324.,  34852.,
      17300.,  17572.,  17844.,  18116.,  44728.,  45400.,  46072.,  46744.,
      82796.,  83996.,  85196.,  86396.,  87596.,  88796.,  89996.,  91196.,
      92396.,  93596.,  94796.,  95996.,  74456.,  75384.,  76312.,  77240.,
      43828.,  44356.,  44884.,  45412.,  18710.,  18942.,  19174.,  19406.,
      43508.,  44036.,  44564.,  45092.,  74650.,  75538.,  76426.,  77314.,
      78202.,  79090.,  79978.,  80866.,  81754.,  82642.,  83530.,  84418.,
      61956.,  62612.,  63268.,  63924.,  34790.,  35150.,  35510.,  35870.,
      270.,    694.,    1118.,   1542.,   2276.,   3188.,   4100.,   5012.,
      6274.,   7738.,   9202.,   10666.,  12130.,  13594.,  15058.,  16522.,
      17986.,  19450.,  20914.,  22378.,  15092.,  16132.,  17172.,  18212.,
      9182.,   9734.,   10286.,  10838.,  9140.,   10180.,  11220.,  12260.,
      23800.,  26008.,  28216.,  30424.,  44492.,  47996.,  51500.,  55004.,
      58508.,  62012.,  65516.,  69020.,  72524.,  76028.,  79532.,  83036.,
      56600.,  59064.,  61528.,  63992.,  32596.,  33892.,  35188.,  36484.,
      29940.,  30980.,  32020.,  33060.,  67960.,  70168.,  72376.,  74584.,
      114572., 118076., 121580., 125084., 128588., 132092., 135596., 139100.,
      142604., 146108., 149612., 153116., 105880., 108344., 110808., 113272.,
      58516.,  59812.,  61108.,  62404.,  50740.,  51780.,  52820.,  53860.,
      112120., 114328., 116536., 118744., 184652., 188156., 191660., 195164.,
      198668., 202172., 205676., 209180., 212684., 216188., 219692., 223196.,
      155160., 157624., 160088., 162552., 84436.,  85732.,  87028.,  88324.,
      71540.,  72580.,  73620.,  74660.,  156280., 158488., 160696., 162904.,
      254732., 258236., 261740., 265244., 268748., 272252., 275756., 279260.,
      282764., 286268., 289772., 293276., 204440., 206904., 209368., 211832.,
      110356., 111652., 112948., 114244., 49670.,  50286.,  50902.,  51518.,
      106964., 108260., 109556., 110852., 172138., 174178., 176218., 178258.,
      180298., 182338., 184378., 186418., 188458., 190498., 192538., 194578.,
      134628., 136052., 137476., 138900., 71894.,  72638.,  73382.,  74126.,
      510.,    1318.,   2126.,   2934.,   4292.,   5972.,   7652.,   9332.,
      11602.,  14218.,  16834.,  19450.,  22066.,  24682.,  27298.,  29914.,
      32530.,  35146.,  37762.,  40378.,  26324.,  28132.,  29940.,  31748.,
      15566.,  16502.,  17438.,  18374.,  17300.,  19108.,  20916.,  22724.,
      43192.,  46936.,  50680.,  54424.,  78188.,  83996.,  89804.,  95612.,
      101420., 107228., 113036., 118844., 124652., 130460., 136268., 142076.,
      94424.,  98424.,  102424., 106424., 53044.,  55108.,  57172.,  59236.,
      53460.,  55268.,  57076.,  58884.,  118072., 121816., 125560., 129304.,
      194348., 200156., 205964., 211772., 217580., 223388., 229196., 235004.,
      240812., 246620., 252428., 258236., 174424., 178424., 182424., 186424.,
      94324.,  96388.,  98452.,  100516., 89620.,  91428.,  93236.,  95044.,
      192952., 196696., 200440., 204184., 310508., 316316., 322124., 327932.,
      333740., 339548., 345356., 351164., 356972., 362780., 368588., 374396.,
      254424., 258424., 262424., 266424., 135604., 137668., 139732., 141796.,
      125780., 127588., 129396., 131204., 267832., 271576., 275320., 279064.,
      426668., 432476., 438284., 444092., 449900., 455708., 461516., 467324.,
      473132., 478940., 484748., 490556., 334424., 338424., 342424., 346424.,
      176884., 178948., 181012., 183076., 80630.,  81630.,  82630.,  83630.,
      170420., 172484., 174548., 176612., 269626., 272818., 276010., 279202.,
      282394., 285586., 288778., 291970., 295162., 298354., 301546., 304738.,
      207300., 209492., 211684., 213876., 108998., 110126., 111254., 112382.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      384.,   610.,   890.,   1010.,  1130.,  1250.,  1144.,  969.,   988.,
      1500.,  2110.,  2320.,  2530.,  2740.,  2436.,  2014.,  2030.,  3000.,
      4125.,  4450.,  4775.,  5100.,  4450.,  3620.,  3470.,  5000.,  6725.,
      7050.,  7375.,  7700.,  6610.,  5300.,  4612.,  6500.,  8570.,  8880.,
      9190.,  9500.,  8012.,  6322.,  4956.,  6910.,  9020.,  9290.,  9560.,
      9830.,  8212.,  6423.,  3408.,  4930.,  6650.,  6770.,  6890.,  7010.,
      6040.,  4857.,  6460.,  9180.,  12190., 12400., 12610., 12820., 10884.,
      8638.,  10670., 15000., 19725., 20050., 20375., 20700., 17410., 13700.,
      12110., 17000., 22325., 22650., 22975., 23300., 19570., 15380., 12964.,
      18020., 23450., 23760., 24070., 24380., 20300., 15826., 12300., 16990.,
      21980., 22250., 22520., 22790., 18868., 14631., 6432.,  9250.,  12410.,
      12530., 12650., 12770., 10936., 8745.,  11932., 16860., 22270., 22480.,
      22690., 22900., 19332., 15262., 19310., 27000., 35325., 35650., 35975.,
      36300., 30370., 23780., 20750., 29000., 37925., 38250., 38575., 38900.,
      32530., 25460., 21316., 29540., 38330., 38640., 38950., 39260., 32588.,
      25330., 19644., 27070., 34940., 35210., 35480., 35750., 29524., 22839.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    10.,   20.,   30.,   34.,   31.,   20.,   11.,   35.,
      74.,   130.,  166.,  161.,  133.,  80.,   41.,   105.,  194.,  310.,
      346.,  311.,  243.,  140.,  71.,   175.,  314.,  490.,  526.,  461.,
      353.,  200.,  101.,  245.,  434.,  670.,  706.,  611.,  463.,  260.,
      105.,  236.,  394.,  580.,  606.,  502.,  367.,  200.,  9.,    28.,
      58.,   100.,  142.,  130.,  103.,  60.,   67.,   163.,  290.,  450.,
      550.,  473.,  357.,  200.,  177.,  393.,  650.,  950.,  1050., 863.,
      627.,  340.,  287.,  623.,  1010., 1450., 1550., 1253., 897.,  480.,
      397.,  853.,  1370., 1950., 2050., 1643., 1167., 620.,  273.,  580.,
      922.,  1300., 1358., 1078., 759.,  400.,  17.,   52.,   106.,  180.,
      254.,  226.,  175.,  100.,  123.,  291.,  506.,  770.,  934.,  785.,
      581.,  320.,  313.,  681.,  1106., 1590., 1754., 1415., 1011., 540.,
      503.,  1071., 1706., 2410., 2574., 2045., 1441., 760.,  693.,  1461.,
      2306., 3230., 3394., 2675., 1871., 980.,  441.,  924.,  1450., 2020.,
      2110., 1654., 1151., 600.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2775.,   4460.,   6565.,   7495.,   8425.,   9355.,   8612.,   7329.,
      7352.,   11232.,  15880.,  17520.,  19160.,  20800.,  18560.,  15392.,
      15355.,  22780.,  31425.,  33975.,  36525.,  39075.,  34180.,  27865.,
      26635.,  38460.,  51825.,  54375.,  56925.,  59475.,  51140.,  41065.,
      35840.,  50560.,  66720.,  69160.,  71600.,  74040.,  62496.,  49352.,
      38739.,  54044.,  70585.,  72715.,  74845.,  76975.,  64340.,  50349.,
      26103.,  37868.,  51205.,  52135.,  53065.,  53995.,  46628.,  37569.,
      49976.,  71136.,  94600.,  96240.,  97880.,  99520.,  84608.,  67232.,
      83035.,  116860., 153825., 156375., 158925., 161475., 135940., 107065.,
      94315.,  132540., 174225., 176775., 179325., 181875., 152900., 120265.,
      101504., 141184., 183840., 186280., 188720., 191160., 159264., 124232.,
      96627.,  133532., 172825., 174955., 177085., 179215., 148436., 115149.,
      49431.,  71276.,  95845.,  96775.,  97705.,  98635.,  84644.,  67809.,
      92600.,  131040., 173320., 174960., 176600., 178240., 150656., 119072.,
      150715., 210940., 276225., 278775., 281325., 283875., 237700., 186265.,
      161995., 226620., 296625., 299175., 301725., 304275., 254660., 199465.,
      167168., 231808., 300960., 303400., 305840., 308280., 256032., 199112.,
      154515., 213020., 275065., 277195., 279325., 281455., 232532., 179949.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     22.,    59.,    124.,   196.,   233.,   218.,   143.,   64.,
      224.,   496.,   896.,   1168.,  1156.,  968.,   588.,   284.,   744.,
      1396.,  2256.,  2528.,  2296.,  1808.,  1048.,  504.,   1264.,  2296.,
      3616.,  3888.,  3436.,  2648.,  1508.,  724.,   1784.,  3196.,  4976.,
      5248.,  4576.,  3488.,  1968.,  789.,   1782.,  2987.,  4412.,  4612.,
      3833.,  2810.,  1535.,  53.,    182.,   395.,   700.,   1028.,  953.,
      762.,   447.,   480.,   1184.,  2128.,  3328.,  4112.,  3556.,  2696.,
      1516.,  1340.,  2984.,  4948.,  7248.,  8032.,  6616.,  4816.,  2616.,
      2200.,  4784.,  7768.,  11168., 11952., 9676.,  6936.,  3716.,  3060.,
      6584.,  10588., 15088., 15872., 12736., 9056.,  4816.,  2117.,  4502.,
      7163.,  10108., 10564., 8393.,  5914.,  3119.,  101.,   342.,   731.,
      1276.,  1860.,  1673.,  1306.,  751.,   896.,   2144.,  3760.,  5760.,
      7056.,  5956.,  4424.,  2444.,  2396.,  5224.,  8500.,  12240., 13536.,
      10936., 7824.,  4184.,  3896.,  8304.,  13240., 18720., 20016., 15916.,
      11224., 5924.,  5396.,  11384., 17980., 25200., 26496., 20896., 14624.,
      7664.,  3445.,  7222.,  11339., 15804., 16516., 12953., 9018.,  4703.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21030.,   34024.,   50330.,   57650.,   64970.,   72290.,   66760.,
      56958.,   56632.,   86816.,   123080.,  136040.,  149000.,  161960.,
      144800.,  120280.,  119330.,  177400.,  245150.,  265350.,  285550.,
      305750.,  267800.,  218570.,  208610.,  301560.,  406750.,  426950.,
      447150.,  467350.,  402200.,  323210.,  282520.,  398752.,  526440.,
      545800.,  565160.,  584520.,  493600.,  389944.,  306294.,  427432.,
      558410.,  575330.,  592250.,  609170.,  509320.,  398670.,  204198.,
      296680.,  401690.,  409010.,  416330.,  423650.,  366280.,  295422.,
      393016.,  559904.,  745160.,  758120.,  771080.,  784040.,  667040.,
      530392.,  655010.,  922360.,  1214750., 1234950., 1255150., 1275350.,
      1074200., 846410.,  744290.,  1046520., 1376350., 1396550., 1416750.,
      1436950., 1208600., 951050.,  803224.,  1117600., 1455720., 1475080.,
      1494440., 1513800., 1261600., 984376.,  765942.,  1058728., 1370570.,
      1387490., 1404410., 1421330., 1177480., 913614.,  387366.,  559336.,
      753050.,  760370.,  767690.,  775010.,  665800.,  533886.,  729400.,
      1032992., 1367240., 1380200., 1393160., 1406120., 1189280., 940504.,
      1190690., 1667320., 2184350., 2204550., 2224750., 2244950., 1880600.,
      1474250., 1279970., 1791480., 2345950., 2366150., 2386350., 2406550.,
      2015000., 1578890., 1323928., 1836448., 2385000., 2404360., 2423720.,
      2443080., 2029600., 1578808., 1225590., 1690024., 2182730., 2199650.,
      2216570., 2233490., 1845640., 1428558.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   394.,    856.,    1400.,   1714.,   1628.,   1078.,
      420.,   1576.,  3596.,   6608.,   8720.,   8732.,   7368.,   4500.,
      2100.,  5576.,  10556.,  17168.,  19280.,  17612.,  13928.,  8100.,
      3780.,  9576.,  17516.,  27728.,  29840.,  26492.,  20488.,  11700.,
      5460.,  13576., 24476.,  38288.,  40400.,  35372.,  27048.,  15300.,
      6110.,  13836., 23242.,  34392.,  35960.,  29938.,  21980.,  12022.,
      350.,   1292.,  2890.,   5208.,   7800.,   7282.,   5852.,   3446.,
      3620.,  9000.,  16268.,  25552.,  31760.,  27548.,  20936.,  11796.,
      10420., 23240., 38588.,  56592.,  62800.,  51788.,  37736.,  20516.,
      17220., 37480., 60908.,  87632.,  93840.,  76028.,  54536.,  29236.,
      24020., 51720., 83228.,  118672., 124880., 100268., 71336.,  37956.,
      16670., 35468., 56458.,  79704.,  83320.,  66226.,  46684.,  24630.,
      670.,   2444.,  5386.,   9560.,   14200.,  12850.,  10076.,  5814.,
      6820.,  16424., 28940.,  44496.,  54800.,  46364.,  34504.,  19092.,
      18740., 40904., 66620.,  96016.,  106320., 85964.,  61544.,  32932.,
      30660., 65384., 104300., 147536., 157840., 125564., 88584.,  46772.,
      42580., 89864., 141980., 199056., 209360., 165164., 115624., 60612.,
      27230., 57100., 89674.,  125016., 130680., 102514., 71388.,  37238.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      678.,   768.,   1094.,  1220.,  1615.,  1780.,  1840.,  2020.,  2065.,
      2260.,  2290.,  2500.,  2114.,  2288.,  1803.,  1938.,  1808.,  1976.,
      2768.,  3000.,  3920.,  4220.,  4320.,  4640.,  4720.,  5060.,  5120.,
      5480.,  4576.,  4872.,  3800.,  4028.,  3790.,  4060.,  5630.,  6000.,
      7775.,  8250.,  8400.,  8900.,  9025.,  9550.,  9650.,  10200., 8450.,
      8900.,  6895.,  7240.,  6550.,  6940.,  9470.,  10000., 12775., 13450.,
      13400., 14100., 14025., 14750., 14650., 15400., 12610., 13220., 10135.,
      10600., 8864.,  9224.,  12512., 13000., 16520., 17140., 17120., 17760.,
      17720., 18380., 18320., 19000., 15472., 16024., 12224., 12644., 9606.,
      9912.,  13406., 13820., 17515., 18040., 18040., 18580., 18565., 19120.,
      19090., 19660., 15962., 16424., 12495., 12846., 6294.,  6816.,  9158.,
      9860.,  12415., 13300., 12640., 13540., 12865., 13780., 13090., 14020.,
      11330., 12080., 9147.,  9714.,  12176., 12920., 17360., 18360., 23120.,
      24380., 23520., 24800., 23920., 25220., 24320., 25640., 20704., 21768.,
      16472., 17276., 20350., 21340., 28670., 30000., 37775., 39450., 38400.,
      40100., 39025., 40750., 39650., 41400., 33410., 34820., 26335., 27400.,
      23110., 24220., 32510., 34000., 42775., 44650., 43400., 45300., 44025.,
      45950., 44650., 46600., 37570., 39140., 29575., 30760., 24992., 25928.,
      34784., 36040., 45320., 46900., 45920., 47520., 46520., 48140., 47120.,
      48760., 39280., 40600., 30656., 31652., 23862., 24600., 32990., 33980.,
      42715., 43960., 43240., 44500., 43765., 45040., 44290., 45580., 36698.,
      37736., 28479., 29262., 11910., 12864., 17222., 18500., 23215., 24820.,
      23440., 25060., 23665., 25300., 23890., 25540., 20546., 21872., 16491.,
      17490., 22544., 23864., 31952., 33720., 42320., 44540., 42720., 44960.,
      43120., 45380., 43520., 45800., 36832., 38664., 29144., 30524., 36910.,
      38620., 51710., 54000., 67775., 70650., 68400., 71300., 69025., 71950.,
      69650., 72600., 58370., 60740., 45775., 47560., 39670., 41500., 55550.,
      58000., 72775., 75850., 73400., 76500., 74025., 77150., 74650., 77800.,
      62530., 65060., 49015., 50920., 41120., 42632., 57056., 59080., 74120.,
      76660., 74720., 77280., 75320., 77900., 75920., 78520., 63088., 65176.,
      49088., 50660., 38118., 39288., 52574., 54140., 67915., 69880., 68440.,
      70420., 68965., 70960., 69490., 71500., 57434., 59048., 44463., 45678.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    14.,   20.,   30.,   40.,   50.,   60.,
      59.,   68.,   55.,   62.,   36.,   40.,   16.,   22.,   56.,   70.,
      124.,  148.,  224.,  260.,  296.,  332.,  292.,  322.,  244.,  266.,
      148.,  160.,  76.,   82.,   196.,  210.,  364.,  388.,  584.,  620.,
      656.,  692.,  592.,  622.,  464.,  486.,  268.,  280.,  136.,  142.,
      336.,  350.,  604.,  628.,  944.,  980.,  1016., 1052., 892.,  922.,
      684.,  706.,  388.,  400.,  196.,  202.,  476.,  490.,  844.,  868.,
      1304., 1340., 1376., 1412., 1192., 1222., 904.,  926.,  508.,  520.,
      205.,  210.,  461.,  472.,  770.,  788.,  1134., 1160., 1186., 1212.,
      983.,  1004., 719.,  734.,  392.,  400.,  9.,    18.,   37.,   56.,
      86.,   116.,  158.,  200.,  242.,  284.,  227.,  260.,  183.,  206.,
      108.,  120.,  112.,  134.,  280.,  326.,  508.,  580.,  800.,  900.,
      1000., 1100., 868.,  946.,  660.,  714.,  372.,  400.,  332.,  354.,
      740.,  786.,  1228., 1300., 1800., 1900., 2000., 2100., 1648., 1726.,
      1200., 1254., 652.,  680.,  552.,  574.,  1200., 1246., 1948., 2020.,
      2800., 2900., 3000., 3100., 2428., 2506., 1740., 1794., 932.,  960.,
      772.,  794.,  1660., 1706., 2668., 2740., 3800., 3900., 4000., 4100.,
      3208., 3286., 2280., 2334., 1212., 1240., 533.,  546.,  1133., 1160.,
      1802., 1844., 2542., 2600., 2658., 2716., 2111., 2156., 1487., 1518.,
      784.,  800.,  17.,   34.,   69.,   104.,  158.,  212.,  286.,  360.,
      434.,  508.,  395.,  452.,  311.,  350.,  180.,  200.,  208.,  246.,
      504.,  582.,  892.,  1012., 1376., 1540., 1704., 1868., 1444., 1570.,
      1076., 1162., 596.,  640.,  588.,  626.,  1284., 1362., 2092., 2212.,
      3016., 3180., 3344., 3508., 2704., 2830., 1936., 2022., 1036., 1080.,
      968.,  1006., 2064., 2142., 3292., 3412., 4656., 4820., 4984., 5148.,
      3964., 4090., 2796., 2882., 1476., 1520., 1348., 1386., 2844., 2922.,
      4492., 4612., 6296., 6460., 6624., 6788., 5224., 5350., 3656., 3742.,
      1916., 1960., 861.,  882.,  1805., 1848., 2834., 2900., 3950., 4040.,
      4130., 4220., 3239., 3308., 2255., 2302., 1176., 1200.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5019.,   5721.,   8176.,   9160.,   12155.,  13445.,  13925.,  15335.,
      15695.,  17225.,  17465.,  19115.,  16192.,  17560.,  13857.,  14919.,
      13708.,  15028.,  21088.,  22912.,  29980.,  32340.,  33140.,  35660.,
      36300.,  38980.,  39460.,  42300.,  35360.,  37696.,  29428.,  31228.,
      29105.,  31235.,  43360.,  46280.,  60025.,  63775.,  64975.,  68925.,
      69925.,  74075.,  74875.,  79225.,  65680.,  69240.,  53675.,  56405.,
      50945.,  54035.,  73760.,  77960.,  99625.,  104975., 104575., 110125.,
      109525., 115275., 114475., 120425., 98640.,  103480., 79355.,  83045.,
      69532.,  72388.,  98208.,  102080., 129740., 134660., 134500., 139580.,
      139260., 144500., 144020., 149420., 121696., 126080., 96196.,  99532.,
      75651.,  78081.,  105616., 108904., 138035., 142205., 142205., 146495.,
      146375., 150785., 150545., 155075., 125920., 129592., 98601.,  101391.,
      49083.,  53241.,  71536.,  77128.,  97115.,  104165., 98885.,  106055.,
      100655., 107945., 102425., 109835., 88768.,  94744.,  71745.,  76263.,
      95500.,  101428., 136288., 144256., 181660., 191700., 184820., 195020.,
      187980., 198340., 191140., 201660., 162848., 171328., 129652., 136060.,
      160145., 168035., 225760., 236360., 297625., 310975., 302575., 316125.,
      307525., 321275., 312475., 326425., 263440., 274680., 207755., 216245.,
      181985., 190835., 256160., 268040., 337225., 352175., 342175., 357325.,
      347125., 362475., 352075., 367625., 296400., 308920., 233435., 242885.,
      197404., 204868., 274848., 284864., 358220., 370820., 362980., 375740.,
      367740., 380660., 372500., 385580., 310624., 321152., 242500., 250444.,
      188835., 194721., 261136., 269032., 338195., 348125., 342365., 352415.,
      346535., 356705., 350705., 360995., 290656., 298936., 225609., 231855.,
      93147.,  100761., 134896., 145096., 182075., 194885., 183845., 196775.,
      185615., 198665., 187385., 200555., 161344., 171928., 129633., 137607.,
      177292., 187828., 251488., 265600., 333340., 351060., 336500., 354380.,
      339660., 357700., 342820., 361020., 290336., 304960., 229876., 240892.,
      291185., 304835., 408160., 426440., 535225., 558175., 540175., 563325.,
      545125., 568475., 550075., 573625., 461200., 480120., 361835., 376085.,
      313025., 327635., 438560., 458120., 574825., 599375., 579775., 604525.,
      584725., 609675., 589675., 614825., 494160., 514360., 387515., 402725.,
      325276., 337348., 451488., 467648., 586700., 606980., 591460., 611900.,
      596220., 616820., 600980., 621740., 499552., 516224., 388804., 401356.,
      302019., 311361., 416656., 429160., 538355., 554045., 542525., 558335.,
      546695., 562625., 550865., 566915., 455392., 468280., 352617., 362319.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    85.,    127.,   192.,   264.,   336.,
      408.,   415.,   481.,   396.,   448.,   263.,   293.,   94.,    138.,
      368.,   472.,   854.,   1034.,  1584.,  1856.,  2128.,  2400.,  2138.,
      2366.,  1808.,  1976.,  1106.,  1198.,  534.,   578.,   1408.,  1512.,
      2654.,  2834.,  4304.,  4576.,  4848.,  5120.,  4418.,  4646.,  3488.,
      3656.,  2026.,  2118.,  974.,   1018.,  2448.,  2552.,  4454.,  4634.,
      7024.,  7296.,  7568.,  7840.,  6698.,  6926.,  5168.,  5336.,  2946.,
      3038.,  1414.,  1458.,  3488.,  3592.,  6254.,  6434.,  9744.,  10016.,
      10288., 10560., 8978.,  9206.,  6848.,  7016.,  3866.,  3958.,  1549.,
      1587.,  3500.,  3584.,  5869.,  6007.,  8672.,  8872.,  9072.,  9272.,
      7543.,  7705.,  5532.,  5648.,  3023.,  3085.,  53.,    123.,   252.,
      400.,   613.,   847.,   1152.,  1480.,  1808.,  2136.,  1711.,  1969.,
      1388.,  1568.,  823.,   917.,   830.,   1002.,  2096.,  2456.,  3830.,
      4394.,  6064.,  6848.,  7632.,  8416.,  6650.,  7262.,  5072.,  5496.,
      2866.,  3086.,  2550.,  2722.,  5696.,  6056.,  9470.,  10034., 13904.,
      14688., 15472., 16256., 12770., 13382., 9312.,  9736.,  5066.,  5286.,
      4270.,  4442.,  9296.,  9656.,  15110., 15674., 21744., 22528., 23312.,
      24096., 18890., 19502., 13552., 13976., 7266.,  7486.,  5990.,  6162.,
      12896., 13256., 20750., 21314., 29584., 30368., 31152., 31936., 25010.,
      25622., 17792., 18216., 9466.,  9686.,  4157.,  4259.,  8844.,  9056.,
      14077., 14407., 19872., 20328., 20784., 21240., 16519., 16873., 11644.,
      11888., 6143.,  6269.,  101.,   235.,   476.,   752.,   1141.,  1567.,
      2112.,  2696.,  3280.,  3864.,  3007.,  3457.,  2380.,  2688.,  1383.,
      1541.,  1566.,  1866.,  3824.,  4440.,  6806.,  7754.,  10544., 11840.,
      13136., 14432., 11162., 12158., 8336.,  9016.,  4626.,  4974.,  4566.,
      4866.,  9984.,  10600., 16286., 17234., 23504., 24800., 26096., 27392.,
      21122., 22118., 15136., 15816., 8106.,  8454.,  7566.,  7866.,  16144.,
      16760., 25766., 26714., 36464., 37760., 39056., 40352., 31082., 32078.,
      21936., 22616., 11586., 11934., 10566., 10866., 22304., 22920., 35246.,
      36194., 49424., 50720., 52016., 53312., 41042., 42038., 28736., 29416.,
      15066., 15414., 6765.,  6931.,  14188., 14528., 22285., 22807., 31072.,
      31784., 32496., 33208., 25495., 26041., 17756., 18128., 9263.,  9453.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38550.,   44094.,   63128.,   70904.,   94210.,   104410.,  108250.,
      119410.,  122290.,  134410.,  136330.,  149410.,  126680.,  137528.,
      108606.,  117030.,  106664.,  117128.,  164512.,  178976.,  234360.,
      253080.,  259480.,  279480.,  284600.,  305880.,  309720.,  332280.,
      277920.,  296480.,  231560.,  245864.,  228010.,  244930.,  340200.,
      363400.,  471550.,  501350.,  510950.,  542350.,  550350.,  583350.,
      589750.,  624350.,  517800.,  546120.,  423490.,  445210.,  401770.,
      426370.,  582120.,  615560.,  786750.,  829350.,  826150.,  870350.,
      865550.,  911350.,  904950.,  952350.,  780200.,  818760.,  627970.,
      657370.,  550760.,  573512.,  778144.,  808992.,  1028280., 1067480.,
      1066200., 1106680., 1104120., 1145880., 1142040., 1185080., 965280.,
      1000224., 763208.,  789800.,  600438.,  619806.,  838424.,  864632.,
      1095970., 1129210., 1129210., 1163410., 1162450., 1197610., 1195690.,
      1231810., 1000280., 1029560., 783390.,  805638.,  387606.,  420798.,
      565400.,  610040.,  768130.,  824410.,  782170.,  839410.,  796210.,
      854410.,  810250.,  869410.,  702680.,  750392.,  568254.,  604326.,
      756392.,  803720.,  1079968., 1143584., 1440120., 1520280., 1465240.,
      1546680., 1490360., 1573080., 1515480., 1599480., 1291680., 1359392.,
      1028744., 1079912., 1270570., 1333570., 1791720., 1876360., 2362750.,
      2469350., 2402150., 2510350., 2441550., 2551350., 2480950., 2592350.,
      2092200., 2181960., 1650370., 1718170., 1444330., 1515010., 2033640.,
      2128520., 2677950., 2797350., 2717350., 2838350., 2756750., 2879350.,
      2796150., 2920350., 2354600., 2454600., 1854850., 1930330., 1569128.,
      1628744., 2185120., 2265120., 2848440., 2949080., 2886360., 2988280.,
      2924280., 3027480., 2962200., 3066680., 2470560., 2554656., 1929032.,
      1992488., 1502454., 1549470., 2077976., 2141048., 2691490., 2770810.,
      2724730., 2805010., 2757970., 2839210., 2791210., 2873410., 2313560.,
      2379704., 1795998., 1845894., 736662.,  797502.,  1067672., 1149176.,
      1442050., 1544410., 1456090., 1559410., 1470130., 1574410., 1484170.,
      1589410., 1278680., 1363256., 1027902., 1091622., 1406120., 1490312.,
      1995424., 2108192., 2645880., 2787480., 2671000., 2813880., 2696120.,
      2840280., 2721240., 2866680., 2305440., 2422304., 1825928., 1913960.,
      2313130., 2422210., 3243240., 3389320., 4253950., 4437350., 4293350.,
      4478350., 4332750., 4519350., 4372150., 4560350., 3666600., 3817800.,
      2877250., 2991130., 2486890., 2603650., 3485160., 3641480., 4569150.,
      4765350., 4608550., 4806350., 4647950., 4847350., 4687350., 4888350.,
      3929000., 4090440., 3081730., 3203290., 2587496., 2683976., 3592096.,
      3721248., 4668600., 4830680., 4706520., 4869880., 4744440., 4909080.,
      4782360., 4948280., 3975840., 4109088., 3094856., 3195176., 2404470.,
      2479134., 3317528., 3417464., 4287010., 4412410., 4320250., 4446610.,
      4353490., 4480810., 4386730., 4515010., 3626840., 3729848., 2808606.,
      2886150.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,    324.,    578.,    890.,    1352.,   1896.,
      2440.,   2984.,   3098.,   3602.,   2996.,   3396.,   2006.,   2238.,
      620.,    956.,    2632.,   3432.,   6292.,   7684.,   11856.,  13968.,
      16080.,  18192.,  16324.,  18100.,  13896.,  15208.,  8540.,   9260.,
      3980.,   4316.,   10632.,  11432.,  20212.,  21604.,  32976.,  35088.,
      37200.,  39312.,  34084.,  35860.,  27016.,  28328.,  15740.,  16460.,
      7340.,   7676.,   18632.,  19432.,  34132.,  35524.,  54096.,  56208.,
      58320.,  60432.,  51844.,  53620.,  40136.,  41448.,  22940.,  23660.,
      10700.,  11036.,  26632.,  27432.,  48052.,  49444.,  75216.,  77328.,
      79440.,  81552.,  69604.,  71380.,  53256.,  54568.,  30140.,  30860.,
      12030.,  12326.,  27252.,  27908.,  45794.,  46874.,  67784.,  69352.,
      70920.,  72488.,  59066.,  60338.,  43380.,  44292.,  23734.,  24222.,
      350.,    902.,    1844.,   3012.,   4610.,   6458.,   8776.,   11368.,
      13960.,  16552.,  13274.,  15314.,  10804.,  12228.,  6422.,   7166.,
      6380.,   7740.,   16200.,  19048.,  29716.,  34180.,  47184.,  53392.,
      59600.,  65808.,  52036.,  56884.,  39752.,  43112.,  22492.,  24236.,
      19980.,  21340.,  44680.,  47528.,  74356.,  78820.,  109264., 115472.,
      121680., 127888., 100516., 105364., 73352.,  76712.,  39932.,  41676.,
      33580.,  34940.,  73160.,  76008.,  118996., 123460., 171344., 177552.,
      183760., 189968., 148996., 153844., 106952., 110312., 57372.,  59116.,
      47180.,  48540.,  101640., 104488., 163636., 168100., 233424., 239632.,
      245840., 252048., 197476., 202324., 140552., 143912., 74812.,  76556.,
      32830.,  33638.,  69876.,  71556.,  111266., 113882., 157128., 160744.,
      164360., 167976., 130682., 133490., 92148.,  94084.,  48630.,  49630.,
      670.,    1734.,   3508.,   5700.,   8642.,   12026.,  16200.,  20840.,
      25480.,  30120.,  23450.,  27026.,  18612.,  21060.,  10838.,  12094.,
      12140.,  14524.,  29768.,  34664.,  53140.,  60676.,  82512.,  92816.,
      103120., 113424., 87748.,  95668.,  65608.,  71016.,  36444.,  39212.,
      35980.,  38364.,  78728.,  83624.,  128500., 136036., 185552., 195856.,
      206160., 216464., 166948., 174868., 119688., 125096., 64124.,  66892.,
      59820.,  62204.,  127688., 132584., 203860., 211396., 288592., 298896.,
      309200., 319504., 246148., 254068., 173768., 179176., 91804.,  94572.,
      83660.,  86044.,  176648., 181544., 279220., 286756., 391632., 401936.,
      412240., 422544., 325348., 333268., 227848., 233256., 119484., 122252.,
      53630.,  54950.,  112500., 115204., 176738., 180890., 246472., 252136.,
      257800., 263464., 202298., 206642., 140916., 143876., 73526.,  75038.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1266.,   1356.,   1446.,   1536.,   2062.,   2188.,   2314.,   2440.,
      3065.,   3230.,   3395.,   3560.,   3500.,   3680.,   3860.,   4040.,
      3935.,   4130.,   4325.,   4520.,   4370.,   4580.,   4790.,   5000.,
      4054.,   4228.,   4402.,   4576.,   3471.,   3606.,   3741.,   3876.,
      3448.,   3616.,   3784.,   3952.,   5304.,   5536.,   5768.,   6000.,
      7540.,   7840.,   8140.,   8440.,   8320.,   8640.,   8960.,   9280.,
      9100.,   9440.,   9780.,   10120.,  9880.,   10240.,  10600.,  10960.,
      8856.,   9152.,   9448.,   9744.,   7372.,   7600.,   7828.,   8056.,
      7310.,   7580.,   7850.,   8120.,   10890.,  11260.,  11630.,  12000.,
      15075.,  15550.,  16025.,  16500.,  16300.,  16800.,  17300.,  17800.,
      17525.,  18050.,  18575.,  19100.,  18750.,  19300.,  19850.,  20400.,
      16450.,  16900.,  17350.,  17800.,  13445.,  13790.,  14135.,  14480.,
      12710.,  13100.,  13490.,  13880.,  18410.,  18940.,  19470.,  20000.,
      24875.,  25550.,  26225.,  26900.,  26100.,  26800.,  27500.,  28200.,
      27325.,  28050.,  28775.,  29500.,  28550.,  29300.,  30050.,  30800.,
      24610.,  25220.,  25830.,  26440.,  19805.,  20270.,  20735.,  21200.,
      17368.,  17728.,  18088.,  18448.,  24536.,  25024.,  25512.,  26000.,
      32420.,  33040.,  33660.,  34280.,  33600.,  34240.,  34880.,  35520.,
      34780.,  35440.,  36100.,  36760.,  35960.,  36640.,  37320.,  38000.,
      30392.,  30944.,  31496.,  32048.,  24028.,  24448.,  24868.,  25288.,
      18906.,  19212.,  19518.,  19824.,  26398.,  26812.,  27226.,  27640.,
      34505.,  35030.,  35555.,  36080.,  35540.,  36080.,  36620.,  37160.,
      36575.,  37130.,  37685.,  38240.,  37610.,  38180.,  38750.,  39320.,
      31462.,  31924.,  32386.,  32848.,  24639.,  24990.,  25341.,  25692.,
      12066.,  12588.,  13110.,  13632.,  17614.,  18316.,  19018.,  19720.,
      23945.,  24830.,  25715.,  26600.,  24380.,  25280.,  26180.,  27080.,
      24815.,  25730.,  26645.,  27560.,  25250.,  26180.,  27110.,  28040.,
      21910.,  22660.,  23410.,  24160.,  17727.,  18294.,  18861.,  19428.,
      23608.,  24352.,  25096.,  25840.,  33720.,  34720.,  35720.,  36720.,
      44980.,  46240.,  47500.,  48760.,  45760.,  47040.,  48320.,  49600.,
      46540.,  47840.,  49140.,  50440.,  47320.,  48640.,  49960.,  51280.,
      40344.,  41408.,  42472.,  43536.,  32140.,  32944.,  33748.,  34552.,
      39710.,  40700.,  41690.,  42680.,  56010.,  57340.,  58670.,  60000.,
      73875.,  75550.,  77225.,  78900.,  75100.,  76800.,  78500.,  80200.,
      76325.,  78050.,  79775.,  81500.,  77550.,  79300.,  81050.,  82800.,
      65410.,  66820.,  68230.,  69640.,  51605.,  52670.,  53735.,  54800.,
      45110.,  46220.,  47330.,  48440.,  63530.,  65020.,  66510.,  68000.,
      83675.,  85550.,  87425.,  89300.,  84900.,  86800.,  88700.,  90600.,
      86125.,  88050.,  89975.,  91900.,  87350.,  89300.,  91250.,  93200.,
      73570.,  75140.,  76710.,  78280.,  57965.,  59150.,  60335.,  61520.,
      49048.,  49984.,  50920.,  51856.,  68312.,  69568.,  70824.,  72080.,
      89060.,  90640.,  92220.,  93800.,  90240.,  91840.,  93440.,  95040.,
      91420.,  93040.,  94660.,  96280.,  92600.,  94240.,  95880.,  97520.,
      77240.,  78560.,  79880.,  81200.,  60316.,  61312.,  62308.,  63304.,
      46986.,  47724.,  48462.,  49200.,  64990.,  65980.,  66970.,  67960.,
      84185.,  85430.,  86675.,  87920.,  85220.,  86480.,  87740.,  89000.,
      86255.,  87530.,  88805.,  90080.,  87290.,  88580.,  89870.,  91160.,
      72358.,  73396.,  74434.,  75472.,  56175.,  56958.,  57741.,  58524.,
      22866.,  23820.,  24774.,  25728.,  33166.,  34444.,  35722.,  37000.,
      44825.,  46430.,  48035.,  49640.,  45260.,  46880.,  48500.,  50120.,
      45695.,  47330.,  48965.,  50600.,  46130.,  47780.,  49430.,  51080.,
      39766.,  41092.,  42418.,  43744.,  31983.,  32982.,  33981.,  34980.,
      43768.,  45088.,  46408.,  47728.,  62136.,  63904.,  65672.,  67440.,
      82420.,  84640.,  86860.,  89080.,  83200.,  85440.,  87680.,  89920.,
      83980.,  86240.,  88500.,  90760.,  84760.,  87040.,  89320.,  91600.,
      71832.,  73664.,  75496.,  77328.,  56908.,  58288.,  59668.,  61048.,
      72110.,  73820.,  75530.,  77240.,  101130., 103420., 105710., 108000.,
      132675., 135550., 138425., 141300., 133900., 136800., 139700., 142600.,
      135125., 138050., 140975., 143900., 136350., 139300., 142250., 145200.,
      114370., 116740., 119110., 121480., 89765.,  91550.,  93335.,  95120.,
      77510.,  79340.,  81170.,  83000.,  108650., 111100., 113550., 116000.,
      142475., 145550., 148625., 151700., 143700., 146800., 149900., 153000.,
      144925., 148050., 151175., 154300., 146150., 149300., 152450., 155600.,
      122530., 125060., 127590., 130120., 96125.,  98030.,  99935.,  101840.,
      80728.,  82240.,  83752.,  85264.,  112088., 114112., 116136., 118160.,
      145700., 148240., 150780., 153320., 146880., 149440., 152000., 154560.,
      148060., 150640., 153220., 155800., 149240., 151840., 154440., 157040.,
      124088., 126176., 128264., 130352., 96604.,  98176.,  99748.,  101320.,
      75066.,  76236.,  77406.,  78576.,  103582., 105148., 106714., 108280.,
      133865., 135830., 137795., 139760., 134900., 136880., 138860., 140840.,
      135935., 137930., 139925., 141920., 136970., 138980., 140990., 143000.,
      113254., 114868., 116482., 118096., 87711.,  88926.,  90141.,  91356.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,     2.,     3.,     4.,     7.,     10.,    13.,    16.,    22.,
      28.,    34.,    40.,    50.,    60.,    70.,    80.,    90.,    100.,
      110.,   120.,   109.,   118.,   127.,   136.,   103.,   110.,   117.,
      124.,   68.,    72.,    76.,    80.,    26.,    32.,    38.,    44.,
      98.,    112.,   126.,   140.,   224.,   248.,   272.,   296.,   412.,
      448.,   484.,   520.,   556.,   592.,   628.,   664.,   554.,   584.,
      614.,   644.,   466.,   488.,   510.,   532.,   284.,   296.,   308.,
      320.,   146.,   152.,   158.,   164.,   378.,   392.,   406.,   420.,
      704.,   728.,   752.,   776.,   1132.,  1168.,  1204.,  1240.,  1276.,
      1312.,  1348.,  1384.,  1154.,  1184.,  1214.,  1244.,  906.,   928.,
      950.,   972.,   524.,   536.,   548.,   560.,   266.,   272.,   278.,
      284.,   658.,   672.,   686.,   700.,   1184.,  1208.,  1232.,  1256.,
      1852.,  1888.,  1924.,  1960.,  1996.,  2032.,  2068.,  2104.,  1754.,
      1784.,  1814.,  1844.,  1346.,  1368.,  1390.,  1412.,  764.,   776.,
      788.,   800.,   386.,   392.,   398.,   404.,   938.,   952.,   966.,
      980.,   1664.,  1688.,  1712.,  1736.,  2572.,  2608.,  2644.,  2680.,
      2716.,  2752.,  2788.,  2824.,  2354.,  2384.,  2414.,  2444.,  1786.,
      1808.,  1830.,  1852.,  1004.,  1016.,  1028.,  1040.,  405.,   410.,
      415.,   420.,   911.,   922.,   933.,   944.,   1522.,  1540.,  1558.,
      1576.,  2242.,  2268.,  2294.,  2320.,  2346.,  2372.,  2398.,  2424.,
      1945.,  1966.,  1987.,  2008.,  1423.,  1438.,  1453.,  1468.,  776.,
      784.,   792.,   800.,   9.,     18.,    27.,    36.,    55.,    74.,
      93.,    112.,   142.,   172.,   202.,   232.,   274.,   316.,   358.,
      400.,   442.,   484.,   526.,   568.,   421.,   454.,   487.,   520.,
      343.,   366.,   389.,   412.,   204.,   216.,   228.,   240.,   202.,
      224.,   246.,   268.,   514.,   560.,   606.,   652.,   944.,   1016.,
      1088.,  1160.,  1500.,  1600.,  1700.,  1800.,  1900.,  2000.,  2100.,
      2200.,  1658.,  1736.,  1814.,  1892.,  1266.,  1320.,  1374.,  1428.,
      716.,   744.,   772.,   800.,   642.,   664.,   686.,   708.,   1434.,
      1480.,  1526.,  1572.,  2384.,  2456.,  2528.,  2600.,  3500.,  3600.,
      3700.,  3800.,  3900.,  4000.,  4100.,  4200.,  3218.,  3296.,  3374.,
      3452.,  2346.,  2400.,  2454.,  2508.,  1276.,  1304.,  1332.,  1360.,
      1082.,  1104.,  1126.,  1148.,  2354.,  2400.,  2446.,  2492.,  3824.,
      3896.,  3968.,  4040.,  5500.,  5600.,  5700.,  5800.,  5900.,  6000.,
      6100.,  6200.,  4778.,  4856.,  4934.,  5012.,  3426.,  3480.,  3534.,
      3588.,  1836.,  1864.,  1892.,  1920.,  1522.,  1544.,  1566.,  1588.,
      3274.,  3320.,  3366.,  3412.,  5264.,  5336.,  5408.,  5480.,  7500.,
      7600.,  7700.,  7800.,  7900.,  8000.,  8100.,  8200.,  6338.,  6416.,
      6494.,  6572.,  4506.,  4560.,  4614.,  4668.,  2396.,  2424.,  2452.,
      2480.,  1053.,  1066.,  1079.,  1092.,  2239.,  2266.,  2293.,  2320.,
      3562.,  3604.,  3646.,  3688.,  5026.,  5084.,  5142.,  5200.,  5258.,
      5316.,  5374.,  5432.,  4177.,  4222.,  4267.,  4312.,  2943.,  2974.,
      3005.,  3036.,  1552.,  1568.,  1584.,  1600.,  17.,    34.,    51.,
      68.,    103.,   138.,   173.,   208.,   262.,   316.,   370.,   424.,
      498.,   572.,   646.,   720.,   794.,   868.,   942.,   1016.,  733.,
      790.,   847.,   904.,   583.,   622.,   661.,   700.,   340.,   360.,
      380.,   400.,   378.,   416.,   454.,   492.,   930.,   1008.,  1086.,
      1164.,  1664.,  1784.,  1904.,  2024.,  2588.,  2752.,  2916.,  3080.,
      3244.,  3408.,  3572.,  3736.,  2762.,  2888.,  3014.,  3140.,  2066.,
      2152.,  2238.,  2324.,  1148.,  1192.,  1236.,  1280.,  1138.,  1176.,
      1214.,  1252.,  2490.,  2568.,  2646.,  2724.,  4064.,  4184.,  4304.,
      4424.,  5868.,  6032.,  6196.,  6360.,  6524.,  6688.,  6852.,  7016.,
      5282.,  5408.,  5534.,  5660.,  3786.,  3872.,  3958.,  4044.,  2028.,
      2072.,  2116.,  2160.,  1898.,  1936.,  1974.,  2012.,  4050.,  4128.,
      4206.,  4284.,  6464.,  6584.,  6704.,  6824.,  9148.,  9312.,  9476.,
      9640.,  9804.,  9968.,  10132., 10296., 7802.,  7928.,  8054.,  8180.,
      5506.,  5592.,  5678.,  5764.,  2908.,  2952.,  2996.,  3040.,  2658.,
      2696.,  2734.,  2772.,  5610.,  5688.,  5766.,  5844.,  8864.,  8984.,
      9104.,  9224.,  12428., 12592., 12756., 12920., 13084., 13248., 13412.,
      13576., 10322., 10448., 10574., 10700., 7226.,  7312.,  7398.,  7484.,
      3788.,  3832.,  3876.,  3920.,  1701.,  1722.,  1743.,  1764.,  3567.,
      3610.,  3653.,  3696.,  5602.,  5668.,  5734.,  5800.,  7810.,  7900.,
      7990.,  8080.,  8170.,  8260.,  8350.,  8440.,  6409.,  6478.,  6547.,
      6616.,  4463.,  4510.,  4557.,  4604.,  2328.,  2352.,  2376.,  2400.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9507.,    10209.,   10911.,   11613.,   15608.,   16592.,   17576.,
      18560.,   23335.,   24625.,   25915.,   27205.,   26785.,   28195.,
      29605.,   31015.,   30235.,   31765.,   33295.,   34825.,   33685.,
      35335.,   36985.,   38635.,   31352.,   32720.,   34088.,   35456.,
      26913.,   27975.,   29037.,   30099.,   26420.,   27740.,   29060.,
      30380.,   40800.,   42624.,   44448.,   46272.,   58180.,   60540.,
      62900.,   65260.,   64380.,   66900.,   69420.,   71940.,   70580.,
      73260.,   75940.,   78620.,   76780.,   79620.,   82460.,   85300.,
      68960.,   71296.,   73632.,   75968.,   57500.,   59300.,   61100.,
      62900.,   56605.,   58735.,   60865.,   62995.,   84520.,   87440.,
      90360.,   93280.,   117225.,  120975.,  124725.,  128475.,  126975.,
      130925.,  134875.,  138825.,  136725.,  140875.,  145025.,  149175.,
      146475.,  150825.,  155175.,  159525.,  128680.,  132240.,  135800.,
      139360.,  105295.,  108025.,  110755.,  113485.,  99565.,   102655.,
      105745.,  108835.,  144360.,  148560.,  152760.,  156960.,  195225.,
      200575.,  205925.,  211275.,  204975.,  210525.,  216075.,  221625.,
      214725.,  220475.,  226225.,  231975.,  224475.,  230425.,  236375.,
      242325.,  193640.,  198480.,  203320.,  208160.,  155935.,  159625.,
      163315.,  167005.,  136916.,  139772.,  142628.,  145484.,  193504.,
      197376.,  201248.,  205120.,  255780.,  260700.,  265620.,  270540.,
      265180.,  270260.,  275340.,  280420.,  274580.,  279820.,  285060.,
      290300.,  283980.,  289380.,  294780.,  300180.,  240096.,  244480.,
      248864.,  253248.,  189884.,  193220.,  196556.,  199892.,  149475.,
      151905.,  154335.,  156765.,  208760.,  212048.,  215336.,  218624.,
      272935.,  277105.,  281275.,  285445.,  281185.,  285475.,  289765.,
      294055.,  289435.,  293845.,  298255.,  302665.,  297685.,  302215.,
      306745.,  311275.,  249080.,  252752.,  256424.,  260096.,  195105.,
      197895.,  200685.,  203475.,  95043.,   99201.,   103359.,  107517.,
      138872.,  144464.,  150056.,  155648.,  188935.,  195985.,  203035.,
      210085.,  192385.,  199555.,  206725.,  213895.,  195835.,  203125.,
      210415.,  217705.,  199285.,  206695.,  214105.,  221515.,  173048.,
      179024.,  185000.,  190976.,  140097.,  144615.,  149133.,  153651.,
      186548.,  192476.,  198404.,  204332.,  266592.,  274560.,  282528.,
      290496.,  355780.,  365820.,  375860.,  385900.,  361980.,  372180.,
      382380.,  392580.,  368180.,  378540.,  388900.,  399260.,  374380.,
      384900.,  395420.,  405940.,  319328.,  327808.,  336288.,  344768.,
      254492.,  260900.,  267308.,  273716.,  314365.,  322255.,  330145.,
      338035.,  443560.,  454160.,  464760.,  475360.,  585225.,  598575.,
      611925.,  625275.,  594975.,  608525.,  622075.,  635625.,  604725.,
      618475.,  632225.,  645975.,  614475.,  628425.,  642375.,  656325.,
      518440.,  529680.,  540920.,  552160.,  409135.,  417625.,  426115.,
      434605.,  357325.,  366175.,  375025.,  383875.,  503400.,  515280.,
      527160.,  539040.,  663225.,  678175.,  693125.,  708075.,  672975.,
      688125.,  703275.,  718425.,  682725.,  698075.,  713425.,  728775.,
      692475.,  708025.,  723575.,  739125.,  583400.,  595920.,  608440.,
      620960.,  459775.,  469225.,  478675.,  488125.,  389204.,  396668.,
      404132.,  411596.,  542176.,  552192.,  562208.,  572224.,  706980.,
      719580.,  732180.,  744780.,  716380.,  729140.,  741900.,  754660.,
      725780.,  738700.,  751620.,  764540.,  735180.,  748260.,  761340.,
      774420.,  613344.,  623872.,  634400.,  644928.,  479036.,  486980.,
      494924.,  502868.,  373251.,  379137.,  385023.,  390909.,  516344.,
      524240.,  532136.,  540032.,  668935.,  678865.,  688795.,  698725.,
      677185.,  687235.,  697285.,  707335.,  685435.,  695605.,  705775.,
      715945.,  693685.,  703975.,  714265.,  724555.,  575096.,  583376.,
      591656.,  599936.,  446529.,  452775.,  459021.,  465267.,  180579.,
      188193.,  195807.,  203421.,  262136.,  272336.,  282536.,  292736.,
      354535.,  367345.,  380155.,  392965.,  357985.,  370915.,  383845.,
      396775.,  361435.,  374485.,  387535.,  400585.,  364885.,  378055.,
      391225.,  404395.,  314744.,  325328.,  335912.,  346496.,  253281.,
      261255.,  269229.,  277203.,  346676.,  357212.,  367748.,  378284.,
      492384.,  506496.,  520608.,  534720.,  653380.,  671100.,  688820.,
      706540.,  659580.,  677460.,  695340.,  713220.,  665780.,  683820.,
      701860.,  719900.,  671980.,  690180.,  708380.,  726580.,  569696.,
      584320.,  598944.,  613568.,  451484.,  462500.,  473516.,  484532.,
      572125.,  585775.,  599425.,  613075.,  802600.,  820880.,  839160.,
      857440.,  1053225., 1076175., 1099125., 1122075., 1062975., 1086125.,
      1109275., 1132425., 1072725., 1096075., 1119425., 1142775., 1082475.,
      1106025., 1129575., 1153125., 908200.,  927120.,  946040.,  964960.,
      712975.,  727225.,  741475.,  755725.,  615085.,  629695.,  644305.,
      658915.,  862440.,  882000.,  901560.,  921120.,  1131225., 1155775.,
      1180325., 1204875., 1140975., 1165725., 1190475., 1215225., 1150725.,
      1175675., 1200625., 1225575., 1160475., 1185625., 1210775., 1235925.,
      973160.,  993360.,  1013560., 1033760., 763615.,  778825.,  794035.,
      809245.,  641492.,  653564.,  665636.,  677708.,  890848.,  907008.,
      923168.,  939328.,  1158180., 1178460., 1198740., 1219020., 1167580.,
      1188020., 1208460., 1228900., 1176980., 1197580., 1218180., 1238780.,
      1186380., 1207140., 1227900., 1248660., 986592.,  1003264., 1019936.,
      1036608., 768188.,  780740.,  793292.,  805844.,  597027.,  606369.,
      615711.,  625053.,  823928.,  836432.,  848936.,  861440.,  1064935.,
      1080625., 1096315., 1112005., 1073185., 1088995., 1104805., 1120615.,
      1081435., 1097365., 1113295., 1129225., 1089685., 1105735., 1121785.,
      1137835., 901112.,  914000.,  926888.,  939776.,  697953.,  707655.,
      717357.,  727059.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,      11.,     17.,     23.,     40.,    60.,    80.,     100.,
      137.,    179.,    221.,    263.,    328.,   400.,   472.,    544.,
      616.,    688.,    760.,    832.,    779.,   845.,   911.,    977.,
      752.,    804.,    856.,    908.,    503.,   533.,   563.,    593.,
      154.,    198.,    242.,    286.,    656.,   760.,   864.,    968.,
      1570.,   1750.,   1930.,   2110.,   2960.,  3232.,  3504.,   3776.,
      4048.,   4320.,   4592.,   4864.,   4102.,  4330.,  4558.,   4786.,
      3488.,   3656.,   3824.,   3992.,   2142.,  2234.,  2326.,   2418.,
      1034.,   1078.,   1122.,   1166.,   2736.,  2840.,  2944.,   3048.,
      5170.,   5350.,   5530.,   5710.,   8400.,  8672.,  8944.,   9216.,
      9488.,   9760.,   10032.,  10304.,  8662.,  8890.,  9118.,   9346.,
      6848.,   7016.,   7184.,   7352.,   3982.,  4074.,  4166.,   4258.,
      1914.,   1958.,   2002.,   2046.,   4816.,  4920.,  5024.,   5128.,
      8770.,   8950.,   9130.,   9310.,   13840., 14112., 14384.,  14656.,
      14928.,  15200.,  15472.,  15744.,  13222., 13450., 13678.,  13906.,
      10208.,  10376.,  10544.,  10712.,  5822.,  5914.,  6006.,   6098.,
      2794.,   2838.,   2882.,   2926.,   6896.,  7000.,  7104.,   7208.,
      12370.,  12550.,  12730.,  12910.,  19280., 19552., 19824.,  20096.,
      20368.,  20640.,  20912.,  21184.,  17782., 18010., 18238.,  18466.,
      13568.,  13736.,  13904.,  14072.,  7662.,  7754.,  7846.,   7938.,
      3069.,   3107.,   3145.,   3183.,   6936.,  7020.,  7104.,   7188.,
      11633.,  11771.,  11909.,  12047.,  17192., 17392., 17592.,  17792.,
      17992.,  18192.,  18392.,  18592.,  14963., 15125., 15287.,  15449.,
      10976.,  11092.,  11208.,  11324.,  5999.,  6061.,  6123.,   6185.,
      53.,     123.,    193.,    263.,    392.,   540.,   688.,    836.,
      1049.,   1283.,   1517.,   1751.,   2056.,  2384.,  2712.,   3040.,
      3368.,   3696.,   4024.,   4352.,   3227.,  3485.,  3743.,   4001.,
      2640.,   2820.,   3000.,   3180.,   1575.,  1669.,  1763.,   1857.,
      1530.,   1702.,   1874.,   2046.,   3920.,  4280.,  4640.,   5000.,
      7234.,   7798.,   8362.,   8926.,   11536., 12320., 13104.,  13888.,
      14672.,  15456.,  16240.,  17024.,  12838., 13450., 14062.,  14674.,
      9824.,   10248.,  10672.,  11096.,  5566.,  5786.,  6006.,   6226.,
      4970.,   5142.,   5314.,   5486.,   11120., 11480., 11840.,  12200.,
      18514.,  19078.,  19642.,  20206.,  27216., 28000., 28784.,  29568.,
      30352.,  31136.,  31920.,  32704.,  25078., 25690., 26302.,  26914.,
      18304.,  18728.,  19152.,  19576.,  9966.,  10186., 10406.,  10626.,
      8410.,   8582.,   8754.,   8926.,   18320., 18680., 19040.,  19400.,
      29794.,  30358.,  30922.,  31486.,  42896., 43680., 44464.,  45248.,
      46032.,  46816.,  47600.,  48384.,  37318., 37930., 38542.,  39154.,
      26784.,  27208.,  27632.,  28056.,  14366., 14586., 14806.,  15026.,
      11850.,  12022.,  12194.,  12366.,  25520., 25880., 26240.,  26600.,
      41074.,  41638.,  42202.,  42766.,  58576., 59360., 60144.,  60928.,
      61712.,  62496.,  63280.,  64064.,  49558., 50170., 50782.,  51394.,
      35264.,  35688.,  36112.,  36536.,  18766., 18986., 19206.,  19426.,
      8237.,   8339.,   8441.,   8543.,   17528., 17740., 17952.,  18164.,
      27905.,  28235.,  28565.,  28895.,  39400., 39856., 40312.,  40768.,
      41224.,  41680.,  42136.,  42592.,  32771., 33125., 33479.,  33833.,
      23104.,  23348.,  23592.,  23836.,  12191., 12317., 12443.,  12569.,
      101.,    235.,    369.,    503.,    744.,   1020.,  1296.,   1572.,
      1961.,   2387.,   2813.,   3239.,   3784.,  4368.,  4952.,   5536.,
      6120.,   6704.,   7288.,   7872.,   5675.,  6125.,  6575.,   7025.,
      4528.,   4836.,   5144.,   5452.,   2647.,  2805.,  2963.,   3121.,
      2906.,   3206.,   3506.,   3806.,   7184.,  7800.,  8416.,   9032.,
      12898.,  13846.,  14794.,  15742.,  20112., 21408., 22704.,  24000.,
      25296.,  26592.,  27888.,  29184.,  21574., 22570., 23566.,  24562.,
      16160.,  16840.,  17520.,  18200.,  8990.,  9338.,  9686.,   10034.,
      8906.,   9206.,   9506.,   9806.,   19504., 20120., 20736.,  21352.,
      31858.,  32806.,  33754.,  34702.,  46032., 47328., 48624.,  49920.,
      51216.,  52512.,  53808.,  55104.,  41494., 42490., 43486.,  44482.,
      29760.,  30440.,  31120.,  31800.,  15950., 16298., 16646.,  16994.,
      14906.,  15206.,  15506.,  15806.,  31824., 32440., 33056.,  33672.,
      50818.,  51766.,  52714.,  53662.,  71952., 73248., 74544.,  75840.,
      77136.,  78432.,  79728.,  81024.,  61414., 62410., 63406.,  64402.,
      43360.,  44040.,  44720.,  45400.,  22910., 23258., 23606.,  23954.,
      20906.,  21206.,  21506.,  21806.,  44144., 44760., 45376.,  45992.,
      69778.,  70726.,  71674.,  72622.,  97872., 99168., 100464., 101760.,
      103056., 104352., 105648., 106944., 81334., 82330., 83326.,  84322.,
      56960.,  57640.,  58320.,  59000.,  29870., 30218., 30566.,  30914.,
      13405.,  13571.,  13737.,  13903.,  28120., 28460., 28800.,  29140.,
      44177.,  44699.,  45221.,  45743.,  61608., 62320., 63032.,  63744.,
      64456.,  65168.,  65880.,  66592.,  50579., 51125., 51671.,  52217.,
      35232.,  35604.,  35976.,  36348.,  18383., 18573., 18763.,  18953.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      73590.,   79134.,   84678.,   90222.,   121336.,  129112.,  136888.,
      144664.,  181970.,  192170.,  202370.,  212570.,  209450.,  220610.,
      231770.,  242930.,  236930.,  249050.,  261170.,  273290.,  264410.,
      277490.,  290570.,  303650.,  246520.,  257368.,  268216.,  279064.,
      211902.,  220326.,  228750.,  237174.,  206728.,  217192.,  227656.,
      238120.,  319904.,  334368.,  348832.,  363296.,  456920.,  475640.,
      494360.,  513080.,  506360.,  526360.,  546360.,  566360.,  555800.,
      577080.,  598360.,  619640.,  605240.,  627800.,  650360.,  672920.,
      544160.,  562720.,  581280.,  599840.,  454120.,  468424.,  482728.,
      497032.,  445370.,  462290.,  479210.,  496130.,  665800.,  689000.,
      712200.,  735400.,  924350.,  954150.,  983950.,  1013750., 1002150.,
      1033550., 1064950., 1096350., 1079950., 1112950., 1145950., 1178950.,
      1157750., 1192350., 1226950., 1261550., 1017800., 1046120., 1074440.,
      1102760., 833330.,  855050.,  876770.,  898490.,  788090.,  812690.,
      837290.,  861890.,  1143240., 1176680., 1210120., 1243560., 1546750.,
      1589350., 1631950., 1674550., 1624550., 1668750., 1712950., 1757150.,
      1702350., 1748150., 1793950., 1839750., 1780150., 1827550., 1874950.,
      1922350., 1536200., 1574760., 1613320., 1651880., 1237490., 1266890.,
      1296290., 1325690., 1087240., 1109992., 1132744., 1155496., 1536928.,
      1567776., 1598624., 1629472., 2031960., 2071160., 2110360., 2149560.,
      2107000., 2147480., 2187960., 2228440., 2182040., 2223800., 2265560.,
      2307320., 2257080., 2300120., 2343160., 2386200., 1908640., 1943584.,
      1978528., 2013472., 1509736., 1536328., 1562920., 1589512., 1188726.,
      1208094., 1227462., 1246830., 1660408., 1686616., 1712824., 1739032.,
      2171090., 2204330., 2237570., 2270810., 2236970., 2271170., 2305370.,
      2339570., 2302850., 2338010., 2373170., 2408330., 2368730., 2404850.,
      2440970., 2477090., 1982200., 2011480., 2040760., 2070040., 1552830.,
      1575078., 1597326., 1619574., 754422.,  787614.,  820806.,  853998.,
      1102840., 1147480., 1192120., 1236760., 1501010., 1557290., 1613570.,
      1669850., 1528490., 1585730., 1642970., 1700210., 1555970., 1614170.,
      1672370., 1730570., 1583450., 1642610., 1701770., 1760930., 1375480.,
      1423192., 1470904., 1518616., 1113918., 1149990., 1186062., 1222134.,
      1483144., 1530472., 1577800., 1625128., 2120096., 2183712., 2247328.,
      2310944., 2830040., 2910200., 2990360., 3070520., 2879480., 2960920.,
      3042360., 3123800., 2928920., 3011640., 3094360., 3177080., 2978360.,
      3062360., 3146360., 3230360., 2540960., 2608672., 2676384., 2744096.,
      2025448., 2076616., 2127784., 2178952., 2501690., 2564690., 2627690.,
      2690690., 3530440., 3615080., 3699720., 3784360., 4658750., 4765350.,
      4871950., 4978550., 4736550., 4844750., 4952950., 5061150., 4814350.,
      4924150., 5033950., 5143750., 4892150., 5003550., 5114950., 5226350.,
      4128200., 4217960., 4307720., 4397480., 3258290., 3326090., 3393890.,
      3461690., 2844410., 2915090., 2985770., 3056450., 4007880., 4102760.,
      4197640., 4292520., 5281150., 5400550., 5519950., 5639350., 5358950.,
      5479950., 5600950., 5721950., 5436750., 5559350., 5681950., 5804550.,
      5514550., 5638750., 5762950., 5887150., 4646600., 4746600., 4846600.,
      4946600., 3662450., 3737930., 3813410., 3888890., 3100936., 3160552.,
      3220168., 3279784., 4320160., 4400160., 4480160., 4560160., 5633880.,
      5734520., 5835160., 5935800., 5708920., 5810840., 5912760., 6014680.,
      5783960., 5887160., 5990360., 6093560., 5859000., 5963480., 6067960.,
      6172440., 4888480., 4972576., 5056672., 5140768., 3818344., 3881800.,
      3945256., 4008712., 2975478., 3022494., 3069510., 3116526., 4116472.,
      4179544., 4242616., 4305688., 5333330., 5412650., 5491970., 5571290.,
      5399210., 5479490., 5559770., 5640050., 5465090., 5546330., 5627570.,
      5708810., 5530970., 5613170., 5695370., 5777570., 4585720., 4651864.,
      4718008., 4784152., 3560766., 3610662., 3660558., 3710454., 1435254.,
      1496094., 1556934., 1617774., 2084344., 2165848., 2247352., 2328856.,
      2820050., 2922410., 3024770., 3127130., 2847530., 2950850., 3054170.,
      3157490., 2875010., 2979290., 3083570., 3187850., 2902490., 3007730.,
      3112970., 3218210., 2504440., 2589016., 2673592., 2758168., 2015934.,
      2079654., 2143374., 2207094., 2759560., 2843752., 2927944., 3012136.,
      3920288., 4033056., 4145824., 4258592., 5203160., 5344760., 5486360.,
      5627960., 5252600., 5395480., 5538360., 5681240., 5302040., 5446200.,
      5590360., 5734520., 5351480., 5496920., 5642360., 5787800., 4537760.,
      4654624., 4771488., 4888352., 3596776., 3684808., 3772840., 3860872.,
      4558010., 4667090., 4776170., 4885250., 6395080., 6541160., 6687240.,
      6833320., 8393150., 8576550., 8759950., 8943350., 8470950., 8655950.,
      8840950., 9025950., 8548750., 8735350., 8921950., 9108550., 8626550.,
      8814750., 9002950., 9191150., 7238600., 7389800., 7541000., 7692200.,
      5683250., 5797130., 5911010., 6024890., 4900730., 5017490., 5134250.,
      5251010., 6872520., 7028840., 7185160., 7341480., 9015550., 9211750.,
      9407950., 9604150., 9093350., 9291150., 9488950., 9686750., 9171150.,
      9370550., 9569950., 9769350., 9248950., 9449950., 9650950., 9851950.,
      7757000., 7918440., 8079880., 8241320., 6087410., 6208970., 6330530.,
      6452090., 5114632., 5211112., 5307592., 5404072., 7103392., 7232544.,
      7361696., 7490848., 9235800., 9397880., 9559960., 9722040., 9310840.,
      9474200., 9637560., 9800920., 9385880., 9550520., 9715160., 9879800.,
      9460920., 9626840., 9792760., 9958680., 7868320., 8001568., 8134816.,
      8268064., 6126952., 6227272., 6327592., 6427912., 4762230., 4836894.,
      4911558., 4986222., 6572536., 6672472., 6772408., 6872344., 8495570.,
      8620970., 8746370., 8871770., 8561450., 8687810., 8814170., 8940530.,
      8627330., 8754650., 8881970., 9009290., 8693210., 8821490., 8949770.,
      9078050., 7189240., 7292248., 7395256., 7498264., 5568702., 5646246.,
      5723790., 5801334.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      946.,    1258.,   1570.,   1882.,   2344.,   2888.,   3432.,   3976.,
      4520.,   5064.,   5608.,   6152.,   5866.,   6370.,   6874.,   7378.,
      5732.,   6132.,   6532.,   6932.,   3862.,   4094.,   4326.,   4558.,
      1020.,   1356.,   1692.,   2028.,   4744.,   5544.,   6344.,   7144.,
      11684.,  13076.,  14468.,  15860.,  22352.,  24464.,  26576.,  28688.,
      30800.,  32912.,  35024.,  37136.,  31508.,  33284.,  35060.,  36836.,
      26952.,  28264.,  29576.,  30888.,  16620.,  17340.,  18060.,  18780.,
      7740.,   8076.,   8412.,   8748.,   20744.,  21544.,  22344.,  23144.,
      39524.,  40916.,  42308.,  43700.,  64592.,  66704.,  68816.,  70928.,
      73040.,  75152.,  77264.,  79376.,  67028.,  68804.,  70580.,  72356.,
      53192.,  54504.,  55816.,  57128.,  31020.,  31740.,  32460.,  33180.,
      14460.,  14796.,  15132.,  15468.,  36744.,  37544.,  38344.,  39144.,
      67364.,  68756.,  70148.,  71540.,  106832., 108944., 111056., 113168.,
      115280., 117392., 119504., 121616., 102548., 104324., 106100., 107876.,
      79432.,  80744.,  82056.,  83368.,  45420.,  46140.,  46860.,  47580.,
      21180.,  21516.,  21852.,  22188.,  52744.,  53544.,  54344.,  55144.,
      95204.,  96596.,  97988.,  99380.,  149072., 151184., 153296., 155408.,
      157520., 159632., 161744., 163856., 138068., 139844., 141620., 143396.,
      105672., 106984., 108296., 109608., 59820.,  60540.,  61260.,  61980.,
      23870.,  24166.,  24462.,  24758.,  54084.,  54740.,  55396.,  56052.,
      90898.,  91978.,  93058.,  94138.,  134568., 136136., 137704., 139272.,
      140840., 142408., 143976., 145544., 117322., 118594., 119866., 121138.,
      86180.,  87092.,  88004.,  88916.,  47158.,  47646.,  48134.,  48622.,
      350.,    902.,    1454.,   2006.,   2948.,   4116.,   5284.,   6452.,
      8050.,   9898.,   11746.,  13594.,  15912.,  18504.,  21096.,  23688.,
      26280.,  28872.,  31464.,  34056.,  25258.,  27298.,  29338.,  31378.,
      20708.,  22132.,  23556.,  24980.,  12374.,  13118.,  13862.,  14606.,
      11900.,  13260.,  14620.,  15980.,  30600.,  33448.,  36296.,  39144.,
      56612.,  61076.,  65540.,  70004.,  90448.,  96656.,  102864., 109072.,
      115280., 121488., 127696., 133904., 101012., 105860., 110708., 115556.,
      77384.,  80744.,  84104.,  87464.,  43884.,  45628.,  47372.,  49116.,
      39100.,  40460.,  41820.,  43180.,  87560.,  90408.,  93256.,  96104.,
      145892., 150356., 154820., 159284., 214608., 220816., 227024., 233232.,
      239440., 245648., 251856., 258064., 197972., 202820., 207668., 212516.,
      144584., 147944., 151304., 154664., 78764.,  80508.,  82252.,  83996.,
      66300.,  67660.,  69020.,  70380.,  144520., 147368., 150216., 153064.,
      235172., 239636., 244100., 248564., 338768., 344976., 351184., 357392.,
      363600., 369808., 376016., 382224., 294932., 299780., 304628., 309476.,
      211784., 215144., 218504., 221864., 113644., 115388., 117132., 118876.,
      93500.,  94860.,  96220.,  97580.,  201480., 204328., 207176., 210024.,
      324452., 328916., 333380., 337844., 462928., 469136., 475344., 481552.,
      487760., 493968., 500176., 506384., 391892., 396740., 401588., 406436.,
      278984., 282344., 285704., 289064., 148524., 150268., 152012., 153756.,
      65150.,  65958.,  66766.,  67574.,  138692., 140372., 142052., 143732.,
      220882., 223498., 226114., 228730., 311976., 315592., 319208., 322824.,
      326440., 330056., 333672., 337288., 259594., 262402., 265210., 268018.,
      183076., 185012., 186948., 188884., 96630.,  97630.,  98630.,  99630.,
      670.,    1734.,   2798.,   3862.,   5636.,   7828.,   10020.,  12212.,
      15154.,  18538.,  21922.,  25306.,  29480.,  34120.,  38760.,  43400.,
      48040.,  52680.,  57320.,  61960.,  44650.,  48226.,  51802.,  55378.,
      35684.,  38132.,  40580.,  43028.,  20886.,  22142.,  23398.,  24654.,
      22780.,  25164.,  27548.,  29932.,  56456.,  61352.,  66248.,  71144.,
      101540., 109076., 116612., 124148., 158544., 168848., 179152., 189456.,
      199760., 210064., 220368., 230672., 170516., 178436., 186356., 194276.,
      127816., 133224., 138632., 144040., 71148.,  73916.,  76684.,  79452.,
      70460.,  72844.,  75228.,  77612.,  154376., 159272., 164168., 169064.,
      252260., 259796., 267332., 274868., 364624., 374928., 385232., 395536.,
      405840., 416144., 426448., 436752., 328916., 336836., 344756., 352676.,
      235976., 241384., 246792., 252200., 126508., 129276., 132044., 134812.,
      118140., 120524., 122908., 125292., 252296., 257192., 262088., 266984.,
      402980., 410516., 418052., 425588., 570704., 581008., 591312., 601616.,
      611920., 622224., 632528., 642832., 487316., 495236., 503156., 511076.,
      344136., 349544., 354952., 360360., 181868., 184636., 187404., 190172.,
      165820., 168204., 170588., 172972., 350216., 355112., 360008., 364904.,
      553700., 561236., 568772., 576308., 776784., 787088., 797392., 807696.,
      818000., 828304., 838608., 848912., 645716., 653636., 661556., 669476.,
      452296., 457704., 463112., 468520., 237228., 239996., 242764., 245532.,
      106430., 107750., 109070., 110390., 223300., 226004., 228708., 231412.,
      350866., 355018., 359170., 363322., 489384., 495048., 500712., 506376.,
      512040., 517704., 523368., 529032., 401866., 406210., 410554., 414898.,
      279972., 282932., 285892., 288852., 146102., 147614., 149126., 150638.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      318.,   510.,   750.,   870.,   816.,   705.,   796.,   1220.,  1730.,
      1940.,  1756.,  1474.,  1610.,  2400.,  3325.,  3650.,  3230.,  2660.,
      2690.,  3900.,  5275.,  5600.,  4850.,  3920.,  3770.,  5400.,  7225.,
      7550.,  6470.,  5180.,  4588.,  6460.,  8510.,  8820.,  7444.,  5878.,
      4710.,  6570.,  8580.,  8850.,  7404.,  5799.,  2964.,  4290.,  5790.,
      5910.,  5100.,  4107.,  5584.,  7940.,  10550., 10760., 9148.,  7270.,
      9170.,  12900., 16975., 17300., 14570., 11480., 10250., 14400., 18925.,
      19250., 16190., 12740., 11330., 15900., 20875., 21200., 17810., 14000.,
      11896., 16540., 21530., 21840., 18196., 14194., 11136., 15390., 19920.,
      20190., 16728., 12981., 5610.,  8070.,  10830., 10950., 9384.,  7509.,
      10372., 14660., 19370., 19580., 16540., 13066., 16730., 23400., 30625.,
      30950., 25910., 20300., 17810., 24900., 32575., 32900., 27530., 21560.,
      18890., 26400., 34525., 34850., 29150., 22820., 19204., 26620., 34550.,
      34860., 28948., 22510., 17562., 24210., 31260., 31530., 26052., 20163.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    7.,    10.,   13.,   10.,   9.,    29.,   39.,   49.,
      59.,   40.,   34.,   95.,   116.,  137.,  158.,  100.,  79.,   200.,
      221.,  242.,  263.,  160.,  124.,  305.,  326.,  347.,  368.,  220.,
      143.,  331.,  349.,  367.,  385.,  220.,  105.,  236.,  247.,  258.,
      269.,  150.,  7.,    22.,   37.,   52.,   67.,   40.,   51.,   125.,
      159.,  193.,  227.,  130.,  142.,  329.,  386.,  443.,  500.,  280.,
      277.,  614.,  671.,  728.,  785.,  430.,  412.,  899.,  956.,  1013.,
      1070., 580.,  365.,  787.,  829.,  871.,  913.,  490.,  231.,  494.,
      517.,  540.,  563.,  300.,  13.,   40.,   67.,   94.,   121.,  70.,
      93.,   221.,  279.,  337.,  395.,  220.,  250.,  563.,  656.,  749.,
      842.,  460.,  475.,  1028., 1121., 1214., 1307., 700.,  700.,  1493.,
      1586., 1679., 1772., 940.,  587.,  1243., 1309., 1375., 1441., 760.,
      357.,  752.,  787.,  822.,  857.,  450.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2283.,   3708.,   5505.,   6435.,   6084.,   5289.,   5888.,   9088.,
      12960.,  14600.,  13280.,  11192.,  12115.,  18140.,  25225.,  27775.,
      24660.,  20365.,  20575.,  29900.,  40525.,  43075.,  37380.,  30265.,
      29035.,  41660.,  55825.,  58375.,  50100.,  40165.,  35672.,  50272.,
      66280.,  68720.,  58048.,  45872.,  36807.,  51372.,  67125.,  69255.,
      57972.,  45429.,  22695.,  32940.,  44565.,  45495.,  39348.,  31749.,
      43184.,  61504.,  81840.,  83480.,  71072.,  56552.,  71335.,  100460.,
      132325., 134875., 113700., 89665.,  79795.,  112220., 147625., 150175.,
      126420., 99565.,  88255.,  123980., 162925., 165475., 139140., 109465.,
      93128.,  129568., 168760., 171200., 142720., 111392., 87459.,  120924.,
      156585., 158715., 131556., 102129., 43107.,  62172.,  83625.,  84555.,
      72612.,  58209.,  80480.,  113920., 150720., 152360., 128864., 101912.,
      130555., 182780., 239425., 241975., 202740., 158965., 139015., 194540.,
      254725., 257275., 215460., 168865., 147475., 206300., 270025., 272575.,
      228180., 178765., 150584., 208864., 271240., 273680., 227392., 176912.,
      138111., 190476., 246045., 248175., 205140., 158829.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     22.,    42.,    62.,    82.,    67.,   52.,   184.,   256.,
      328.,   400.,   280.,   221.,   646.,   802.,  958.,  1114.,  719.,
      551.,   1426.,  1582.,  1738.,  1894.,  1169., 881.,  2206.,  2362.,
      2518.,  2674.,  1619.,  1056.,  2464.,  2600., 2736., 2872.,  1652.,
      789.,   1782.,  1866.,  1950.,  2034.,  1139., 41.,   142.,   258.,
      374.,   490.,   295.,   364.,   904.,   1168., 1432., 1696.,  976.,
      1049.,  2446.,  2890.,  3334.,  3778.,  2123., 2099., 4666.,  5110.,
      5554.,  5998.,  3293.,  3149.,  6886.,  7330., 7774., 8218.,  4463.,
      2808.,  6064.,  6392.,  6720.,  7048.,  3788., 1785., 3822.,  4002.,
      4182.,  4362.,  2327.,  77.,    262.,   474.,  686.,  898.,   523.,
      676.,   1624.,  2080.,  2536.,  2992.,  1672., 1877., 4246.,  4978.,
      5710.,  6442.,  3527.,  3647.,  7906.,  8638., 9370., 10102., 5417.,
      5417.,  11566., 12298., 13030., 13762., 7307., 4560., 9664.,  10184.,
      10704., 11224., 5924.,  2781.,  5862.,  6138., 6414., 6690.,  3515.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17238.,   28200.,   42090.,   49410.,   46920.,   40926.,   45208.,
      70048.,   100200.,  113160.,  103200.,  87160.,   93890.,   140920.,
      196350.,  216550.,  192600.,  159290.,  160850.,  234040.,  317550.,
      337750.,  293400.,  237770.,  227810.,  327160.,  438750.,  458950.,
      394200.,  316250.,  281272.,  396576.,  523080.,  542440.,  458400.,
      362392.,  290982.,  406248.,  530970.,  547890.,  458760.,  359598.,
      177510.,  258024.,  349530.,  356850.,  309000.,  249582.,  339544.,
      484000.,  644520.,  657480.,  560160.,  446008.,  562610.,  792760.,
      1044750., 1064950., 898200.,  708650.,  629570.,  885880.,  1165950.,
      1186150., 999000.,  787130.,  696530.,  979000.,  1287150., 1307350.,
      1099800., 865610.,  736888.,  1025568., 1336200., 1355560., 1130400.,
      882520.,  693174.,  958632.,  1241610., 1258530., 1043400., 810174.,
      337782.,  487848.,  656970.,  664290.,  571080.,  458238.,  633880.,
      897952.,  1188840., 1201800., 1017120., 804856.,  1031330., 1444600.,
      1893150., 1913350., 1603800., 1258010., 1098290., 1537720., 2014350.,
      2034550., 1704600., 1336490., 1165250., 1630840., 2135550., 2155750.,
      1805400., 1414970., 1192504., 1654560., 2149320., 2168680., 1802400.,
      1402648., 1095366., 1511016., 1952250., 1969170., 1628040., 1260750.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,   284.,   428.,    572.,    486.,   340.,   1288.,  1832.,
      2376.,  2920.,  2084.,  1570.,   4724.,   5924.,  7124.,  8324.,  5434.,
      4090.,  10724., 11924., 13124.,  14324.,  8914.,  6610.,  16724., 17924.,
      19124., 20324., 12394., 8100.,   18984.,  20040., 21096., 22152., 12788.,
      6110.,  13836., 14492., 15148.,  15804.,  8870.,  270.,   1004.,  1916.,
      2828.,  3740.,  2262.,  2740.,   6856.,   8936.,  11016., 13096., 7556.,
      8050.,  18836., 22340., 25844.,  29348.,  16522., 16330., 36356., 39860.,
      43364., 46868., 25762., 24610.,  53876.,  57380., 60884., 64388., 35002.,
      22020., 47592., 50184., 52776.,  55368.,  29780., 14030., 30060., 31484.,
      32908., 34332., 18326., 510.,    1868.,   3548.,  5228.,  6908.,  4038.,
      5140.,  12424., 16040., 19656.,  23272.,  13028., 14530., 32948., 38756.,
      44564., 50372., 27610., 28570.,  61988.,  67796., 73604., 79412., 42610.,
      42610., 91028., 96836., 102644., 108452., 57610., 35940., 76200., 80328.,
      84456., 88584., 46772., 21950.,  46284.,  48476., 50668., 52860., 27782.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      564.,   636.,   918.,   1020.,  1365.,  1500.,  1590.,  1740.,  1506.,
      1632.,  1311.,  1410.,  1460.,  1592.,  2256.,  2440.,  3220.,  3460.,
      3620.,  3880.,  3296.,  3512.,  2780.,  2948.,  3010.,  3220.,  4510.,
      4800.,  6275.,  6650.,  6900.,  7300.,  6130.,  6460.,  5065.,  5320.,
      5080.,  5380.,  7390.,  7800.,  10025., 10550., 10650., 11200., 9250.,
      9700.,  7495.,  7840.,  7150.,  7540.,  10270., 10800., 13775., 14450.,
      14400., 15100., 12370., 12940., 9925.,  10360., 8828.,  9176.,  12448.,
      12920., 16420., 17020., 17020., 17640., 14384., 14888., 11372., 11756.,
      9132.,  9420.,  12750., 13140., 16665., 17160., 17190., 17700., 14394.,
      14808., 11283., 11598., 5478.,  5928.,  7974.,  8580.,  10815., 11580.,
      11040., 11820., 9570.,  10200., 7737.,  8214.,  10532., 11168., 15024.,
      15880., 20020., 21100., 20420., 21520., 17408., 18296., 13868., 14540.,
      17500., 18340., 24670., 25800., 32525., 33950., 33150., 34600., 27970.,
      29140., 22075., 22960., 19570., 20500., 27550., 28800., 36275., 37850.,
      36900., 38500., 31090., 32380., 24505., 25480., 21640., 22660., 30430.,
      31800., 40025., 41750., 40650., 42400., 34210., 35620., 26935., 28000.,
      22940., 23792., 31936., 33080., 41620., 43060., 42220., 43680., 35216.,
      36392., 27500., 28388., 21606., 22272., 29886., 30780., 38715., 39840.,
      39240., 40380., 32538., 33456., 25269., 25962., 10392., 11220., 15030.,
      16140., 20265., 21660., 20490., 21900., 17634., 18768., 14163., 15018.,
      19604., 20744., 27792., 29320., 36820., 38740., 37220., 39160., 31520.,
      33080., 24956., 26132., 31990., 33460., 44830., 46800., 58775., 61250.,
      59400., 61900., 49810., 51820., 39085., 40600., 34060., 35620., 47710.,
      49800., 62525., 65150., 63150., 65800., 52930., 55060., 41515., 43120.,
      36130., 37780., 50590., 52800., 66275., 69050., 66900., 69700., 56050.,
      58300., 43945., 45640., 37052., 38408., 51424., 53240., 66820., 69100.,
      67420., 69720., 56048., 57896., 43628., 45020., 34080., 35124., 47022.,
      48420., 60765., 62520., 61290., 63060., 50682., 52104., 39255., 40326.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    11.,   14.,   17.,   20.,   23.,   26.,
      18.,   20.,   14.,   18.,   48.,   58.,   68.,   78.,   88.,   98.,
      108.,  118.,  74.,   80.,   59.,   68.,   169.,  190.,  211.,  232.,
      253.,  274.,  295.,  316.,  188.,  200.,  149.,  158.,  379.,  400.,
      421.,  442.,  463.,  484.,  505.,  526.,  308.,  320.,  239.,  248.,
      589.,  610.,  631.,  652.,  673.,  694.,  715.,  736.,  428.,  440.,
      278.,  286.,  644.,  662.,  680.,  698.,  716.,  734.,  752.,  770.,
      430.,  440.,  205.,  210.,  461.,  472.,  483.,  494.,  505.,  516.,
      527.,  538.,  294.,  300.,  7.,    14.,   29.,   44.,   59.,   74.,
      89.,   104.,  119.,  134.,  72.,   80.,   86.,   102.,  216.,  250.,
      284.,  318.,  352.,  386.,  420.,  454.,  242.,  260.,  257.,  284.,
      601.,  658.,  715.,  772.,  829.,  886.,  943.,  1000., 530.,  560.,
      527.,  554.,  1171., 1228., 1285., 1342., 1399., 1456., 1513., 1570.,
      830.,  860.,  797.,  824.,  1741., 1798., 1855., 1912., 1969., 2026.,
      2083., 2140., 1130., 1160., 710.,  730.,  1532., 1574., 1616., 1658.,
      1700., 1742., 1784., 1826., 958.,  980.,  451.,  462.,  965.,  988.,
      1011., 1034., 1057., 1080., 1103., 1126., 588.,  600.,  13.,   26.,
      53.,   80.,   107.,  134.,  161.,  188.,  215.,  242.,  126.,  140.,
      158.,  186.,  384.,  442.,  500.,  558.,  616.,  674.,  732.,  790.,
      410.,  440.,  455.,  500.,  1033., 1126., 1219., 1312., 1405., 1498.,
      1591., 1684., 872.,  920.,  905.,  950.,  1963., 2056., 2149., 2242.,
      2335., 2428., 2521., 2614., 1352., 1400., 1355., 1400., 2893., 2986.,
      3079., 3172., 3265., 3358., 3451., 3544., 1832., 1880., 1142., 1174.,
      2420., 2486., 2552., 2618., 2684., 2750., 2816., 2882., 1486., 1520.,
      697.,  714.,  1469., 1504., 1539., 1574., 1609., 1644., 1679., 1714.,
      882.,  900.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4143.,   4701.,   6816.,   7608.,   10215.,  11265.,  11985.,  13155.,
      11424.,  12408.,  9993.,   10767.,  10996.,  12028.,  17088.,  18528.,
      24500.,  26380.,  27660.,  29700.,  25280.,  26976.,  21388.,  22708.,
      22985.,  24635.,  34560.,  36840.,  48225.,  51175.,  53175.,  56325.,
      47360.,  49960.,  39215.,  41225.,  39365.,  41735.,  57360.,  60600.,
      77925.,  82075.,  82875.,  87225.,  72080.,  75640.,  58475.,  61205.,
      55745.,  58835.,  80160.,  84360.,  107625., 112975., 112575., 118125.,
      96800.,  101320., 77735.,  81185.,  69268.,  72028.,  97728.,  101472.,
      128980., 133740., 133740., 138660., 113088., 117088., 89452.,  92500.,
      71895.,  74181.,  100416., 103512., 131295., 135225., 135465., 139515.,
      113472., 116760., 88977.,  91479.,  42699.,  46281.,  62256.,  67080.,
      84555.,  90645.,  86325.,  92535.,  74928.,  79944.,  60645.,  64443.,
      82564.,  87628.,  117888., 124704., 157220., 165820., 160380., 169140.,
      136832., 143904., 109084., 114436., 137645., 144335., 194160., 203160.,
      256125., 267475., 261075., 272625., 220400., 229720., 174035., 181085.,
      154025., 161435., 216960., 226920., 285825., 298375., 290775., 303525.,
      245120., 255400., 193295., 201065., 170405., 178535., 239760., 250680.,
      315525., 329275., 320475., 334425., 269840., 281080., 212555., 221045.,
      181156., 187948., 252288., 261408., 328900., 340380., 333660., 345300.,
      278400., 287776., 217468., 224548., 170931., 176241., 236496., 243624.,
      306435., 315405., 310605., 319695., 257616., 264936., 200109., 205635.,
      81255.,  87861.,  117696., 126552., 158895., 170025., 160665., 171915.,
      138432., 147480., 111297., 118119., 154132., 163228., 218688., 230880.,
      289940., 305260., 293100., 308580., 248384., 260832., 196780., 206164.,
      252305., 264035., 353760., 369480., 464025., 483775., 468975., 488925.,
      393440., 409480., 308855., 320945., 268685., 281135., 376560., 393240.,
      493725., 514675., 498675., 519825., 418160., 435160., 328115., 340925.,
      285065., 298235., 399360., 417000., 523425., 545575., 528375., 550725.,
      442880., 460840., 347375., 360905., 293044., 303868., 406848., 421344.,
      528820., 547020., 533580., 551940., 443712., 458464., 345484., 356596.,
      269967., 278301., 372576., 383736., 481575., 495585., 485745., 499875.,
      401760., 413112., 311241., 319791.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    68.,    88.,    108.,   128.,   148.,
      168.,   123.,   137.,   82.,    110.,   312.,   384.,   456.,   528.,
      600.,   672.,   744.,   816.,   526.,   570.,   391.,   457.,   1172.,
      1328.,  1484.,  1640.,  1796.,  1952.,  2108.,  2264.,  1369.,  1459.,
      1051.,  1117.,  2732.,  2888.,  3044.,  3200.,  3356.,  3512.,  3668.,
      3824.,  2269.,  2359.,  1711.,  1777.,  4292.,  4448.,  4604.,  4760.,
      4916.,  5072.,  5228.,  5384.,  3169.,  3259.,  2066.,  2126.,  4824.,
      4960.,  5096.,  5232.,  5368.,  5504.,  5640.,  5776.,  3246.,  3322.,
      1549.,  1587.,  3500.,  3584.,  3668.,  3752.,  3836.,  3920.,  4004.,
      4088.,  2243.,  2289.,  41.,    95.,    196.,   312.,   428.,   544.,
      660.,   776.,   892.,   1008.,  543.,   605.,   634.,   758.,   1608.,
      1872.,  2136.,  2400.,  2664.,  2928.,  3192.,  3456.,  1846.,  1986.,
      1939.,  2149.,  4556.,  5000.,  5444.,  5888.,  6332.,  6776.,  7220.,
      7664.,  4069.,  4303.,  4039.,  4249.,  8996.,  9440.,  9884.,  10328.,
      10772., 11216., 11660., 12104., 6409.,  6643.,  6139.,  6349.,  13436.,
      13880., 14324., 14768., 15212., 15656., 16100., 16544., 8749.,  8983.,
      5498.,  5654.,  11880., 12208., 12536., 12864., 13192., 13520., 13848.,
      14176., 7446.,  7618.,  3505.,  3591.,  7508.,  7688.,  7868.,  8048.,
      8228.,  8408.,  8588.,  8768.,  4583.,  4677.,  77.,    179.,   364.,
      576.,   788.,   1000.,  1212.,  1424.,  1636.,  1848.,  963.,   1073.,
      1186.,  1406.,  2904.,  3360.,  3816.,  4272.,  4728.,  5184.,  5640.,
      6096.,  3166.,  3402.,  3487.,  3841.,  7940.,  8672.,  9404.,  10136.,
      10868., 11600., 12332., 13064., 6769.,  7147.,  7027.,  7381.,  15260.,
      15992., 16724., 17456., 18188., 18920., 19652., 20384., 10549., 10927.,
      10567., 10921., 22580., 23312., 24044., 24776., 25508., 26240., 26972.,
      27704., 14329., 14707., 8930.,  9182.,  18936., 19456., 19976., 20496.,
      21016., 21536., 22056., 22576., 11646., 11914., 5461.,  5595.,  11516.,
      11792., 12068., 12344., 12620., 12896., 13172., 13448., 6923.,  7065.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31686.,   36078.,   52440.,   58680.,   78930.,   87210.,   92970.,
      102210.,  88920.,   96696.,   77982.,   84102.,   85256.,   93416.,
      132896.,  144288.,  191000.,  205880.,  216120.,  232280.,  197920.,
      211360.,  167720.,  178184.,  179530.,  192610.,  270440.,  288520.,
      377950.,  401350.,  417350.,  442350.,  372200.,  392840.,  308530.,
      324490.,  309850.,  328690.,  451880.,  477640.,  614350.,  647350.,
      653750.,  688350.,  569000.,  597320.,  461890.,  483610.,  440170.,
      464770.,  633320.,  666760.,  850750.,  893350.,  890150.,  934350.,
      765800.,  801800.,  615250.,  642730.,  548744.,  570728.,  774432.,
      804256.,  1022360., 1060280., 1060280., 1099480., 896800.,  928672.,
      709544.,  733832.,  570534.,  588750.,  797016.,  821688.,  1042290.,
      1073610., 1075530., 1107810., 901080.,  927288.,  706686.,  726630.,
      337110.,  365694.,  491928.,  530424.,  668610.,  717210.,  682650.,
      732210.,  592920.,  632952.,  480174.,  510486.,  653768.,  694184.,
      933920.,  988320.,  1246040., 1314680., 1271160., 1341080., 1084960.,
      1141408., 865256.,  907976.,  1091770., 1145170., 1540520., 1612360.,
      2032750., 2123350., 2072150., 2164350., 1749800., 1824200., 1382050.,
      1438330., 1222090., 1281250., 1721960., 1801480., 2269150., 2369350.,
      2308550., 2410350., 1946600., 2028680., 1535410., 1597450., 1352410.,
      1417330., 1903400., 1990600., 2505550., 2615350., 2544950., 2656350.,
      2143400., 2233160., 1688770., 1756570., 1439816., 1494056., 2005536.,
      2078368., 2615000., 2706680., 2652920., 2745880., 2213920., 2288800.,
      1729640., 1786184., 1359798., 1402206., 1881624., 1938552., 2438370.,
      2510010., 2471610., 2544210., 2050200., 2108664., 1592718., 1636854.,
      642534.,  695310.,  931416.,  1002168., 1258290., 1347210., 1272330.,
      1362210., 1096920., 1169208., 882366.,  936870.,  1222280., 1294952.,
      1734944., 1832352., 2301080., 2423480., 2326200., 2449880., 1972000.,
      2071456., 1562792., 1637768., 2004010., 2097730., 2810600., 2936200.,
      3687550., 3845350., 3726950., 3886350., 3127400., 3255560., 2455570.,
      2552170., 2134330., 2233810., 2992040., 3125320., 3923950., 4091350.,
      3963350., 4132350., 3324200., 3460040., 2608930., 2711290., 2264650.,
      2369890., 3173480., 3314440., 4160350., 4337350., 4199750., 4378350.,
      3521000., 3664520., 2762290., 2870410., 2330888., 2417384., 3236640.,
      3352480., 4207640., 4353080., 4245560., 4392280., 3531040., 3648928.,
      2749736., 2838536., 2149062., 2215662., 2966232., 3055416., 3834450.,
      3946410., 3867690., 3980610., 3199320., 3290040., 2478750., 2547078.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,    324.,    468.,    612.,    756.,    900.,
      1044.,   1188.,   902.,    1006.,   540.,    748.,    2216.,   2760.,
      3304.,   3848.,   4392.,   4936.,   5480.,   6024.,   3948.,   4284.,
      2810.,   3314.,   8668.,   9868.,   11068.,  12268.,  13468.,  14668.,
      15868.,  17068.,  10418.,  11114.,  7850.,   8354.,   20668.,  21868.,
      23068.,  24268.,  25468.,  26668.,  27868.,  29068.,  17378.,  18074.,
      12890.,  13394.,  32668.,  33868.,  35068.,  36268.,  37468.,  38668.,
      39868.,  41068.,  24338.,  25034.,  15900.,  16364.,  37288.,  38344.,
      39400.,  40456.,  41512.,  42568.,  43624.,  44680.,  25196.,  25788.,
      12030.,  12326.,  27252.,  27908.,  28564.,  29220.,  29876.,  30532.,
      31188.,  31844.,  17510.,  17870.,  270.,    694.,    1428.,   2340.,
      3252.,   4164.,   5076.,   5988.,   6900.,   7812.,   4214.,   4702.,
      4860.,   5836.,   12392.,  14472.,  16552.,  18632.,  20712.,  22792.,
      24872.,  26952.,  14412.,  15516.,  15050.,  16706.,  35452.,  38956.,
      42460.,  45964.,  49468.,  52972.,  56476.,  59980.,  31874.,  33722.,
      31610.,  33266.,  70492.,  73996.,  77500.,  81004.,  84508.,  88012.,
      91516.,  95020.,  50354.,  52202.,  48170.,  49826.,  105532., 109036.,
      112540., 116044., 119548., 123052., 126556., 130060., 68834.,  70682.,
      43260.,  44492.,  93544.,  96136.,  98728.,  101320., 103912., 106504.,
      109096., 111688., 58700.,  60060.,  27630.,  28310.,  59220.,  60644.,
      62068.,  63492.,  64916.,  66340.,  67764.,  69188.,  36182.,  36926.,
      510.,    1318.,   2676.,   4356.,   6036.,   7716.,   9396.,   11076.,
      12756.,  14436.,  7526.,   8398.,   9180.,   10924.,  22568.,  26184.,
      29800.,  33416.,  37032.,  40648.,  44264.,  47880.,  24876.,  26748.,
      27290.,  30098.,  62236.,  68044.,  73852.,  79660.,  85468.,  91276.,
      97084.,  102892., 53330.,  56330.,  55370.,  58178.,  120316., 126124.,
      131932., 137740., 143548., 149356., 155164., 160972., 83330.,  86330.,
      83450.,  86258.,  178396., 184204., 190012., 195820., 201628., 207436.,
      213244., 219052., 113330., 116330., 70620.,  72620.,  149800., 153928.,
      158056., 162184., 166312., 170440., 174568., 178696., 92204.,  94332.,
      43230.,  44294.,  91188.,  93380.,  95572.,  97764.,  99956.,  102148.,
      104340., 106532., 54854.,  55982.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1056.,   1128.,   1200.,   1272.,   1734.,   1836.,   1938.,   2040.,
      2595.,   2730.,   2865.,   3000.,   3030.,   3180.,   3330.,   3480.,
      2886.,   3012.,   3138.,   3264.,   2523.,   2622.,   2721.,   2820.,
      2788.,   2920.,   3052.,   3184.,   4328.,   4512.,   4696.,   4880.,
      6200.,   6440.,   6680.,   6920.,   6980.,   7240.,   7500.,   7760.,
      6376.,   6592.,   6808.,   7024.,   5392.,   5560.,   5728.,   5896.,
      5810.,   6020.,   6230.,   6440.,   8730.,   9020.,   9310.,   9600.,
      12175.,  12550.,  12925.,  13300.,  13400.,  13800.,  14200.,  14600.,
      11930.,  12260.,  12590.,  12920.,  9875.,   10130.,  10385.,  10640.,
      9860.,   10160.,  10460.,  10760.,  14370.,  14780.,  15190.,  15600.,
      19525.,  20050.,  20575.,  21100.,  20750.,  21300.,  21850.,  22400.,
      18050.,  18500.,  18950.,  19400.,  14645.,  14990.,  15335.,  15680.,
      13910.,  14300.,  14690.,  15080.,  20010.,  20540.,  21070.,  21600.,
      26875.,  27550.,  28225.,  28900.,  28100.,  28800.,  29500.,  30200.,
      24170.,  24740.,  25310.,  25880.,  19415.,  19850.,  20285.,  20720.,
      17308.,  17656.,  18004.,  18352.,  24424.,  24896.,  25368.,  25840.,
      32240.,  32840.,  33440.,  34040.,  33420.,  34040.,  34660.,  35280.,
      28264.,  28768.,  29272.,  29776.,  22360.,  22744.,  23128.,  23512.,
      17976.,  18264.,  18552.,  18840.,  25110.,  25500.,  25890.,  26280.,
      32835.,  33330.,  33825.,  34320.,  33870.,  34380.,  34890.,  35400.,
      28374.,  28788.,  29202.,  29616.,  22251.,  22566.,  22881.,  23196.,
      10506.,  10956.,  11406.,  11856.,  15342.,  15948.,  16554.,  17160.,
      20865.,  21630.,  22395.,  23160.,  21300.,  22080.,  22860.,  23640.,
      18510.,  19140.,  19770.,  20400.,  14997.,  15474.,  15951.,  16428.,
      20428.,  21064.,  21700.,  22336.,  29192.,  30048.,  30904.,  31760.,
      38960.,  40040.,  41120.,  42200.,  39740.,  40840.,  41940.,  43040.,
      33928.,  34816.,  35704.,  36592.,  27064.,  27736.,  28408.,  29080.,
      34160.,  35000.,  35840.,  36680.,  48210.,  49340.,  50470.,  51600.,
      63625.,  65050.,  66475.,  67900.,  64850.,  66300.,  67750.,  69200.,
      54770.,  55940.,  57110.,  58280.,  43265.,  44150.,  45035.,  45920.,
      38210.,  39140.,  40070.,  41000.,  53850.,  55100.,  56350.,  57600.,
      70975.,  72550.,  74125.,  75700.,  72200.,  73800.,  75400.,  77000.,
      60890.,  62180.,  63470.,  64760.,  48035.,  49010.,  49985.,  50960.,
      42260.,  43280.,  44300.,  45320.,  59490.,  60860.,  62230.,  63600.,
      78325.,  80050.,  81775.,  83500.,  79550.,  81300.,  83050.,  84800.,
      67010.,  68420.,  69830.,  71240.,  52805.,  53870.,  54935.,  56000.,
      45028.,  45880.,  46732.,  47584.,  62728.,  63872.,  65016.,  66160.,
      81800.,  83240.,  84680.,  86120.,  82980.,  84440.,  85900.,  87360.,
      69256.,  70432.,  71608.,  72784.,  54112.,  55000.,  55888.,  56776.,
      42546.,  43212.,  43878.,  44544.,  58878.,  59772.,  60666.,  61560.,
      76305.,  77430.,  78555.,  79680.,  77340.,  78480.,  79620.,  80760.,
      64158.,  65076.,  65994.,  66912.,  49845.,  50538.,  51231.,  51924.,
      19956.,  20784.,  21612.,  22440.,  28950.,  30060.,  31170.,  32280.,
      39135.,  40530.,  41925.,  43320.,  39570.,  40980.,  42390.,  43800.,
      34134.,  35268.,  36402.,  37536.,  27471.,  28326.,  29181.,  30036.,
      38068.,  39208.,  40348.,  41488.,  54056.,  55584.,  57112.,  58640.,
      71720.,  73640.,  75560.,  77480.,  72500.,  74440.,  76380.,  78320.,
      61480.,  63040.,  64600.,  66160.,  48736.,  49912.,  51088.,  52264.,
      62510.,  63980.,  65450.,  66920.,  87690.,  89660.,  91630.,  93600.,
      115075., 117550., 120025., 122500., 116300., 118800., 121300., 123800.,
      97610.,  99620.,  101630., 103640., 76655.,  78170.,  79685.,  81200.,
      66560.,  68120.,  69680.,  71240.,  93330.,  95420.,  97510.,  99600.,
      122425., 125050., 127675., 130300., 123650., 126300., 128950., 131600.,
      103730., 105860., 107990., 110120., 81425.,  83030.,  84635.,  86240.,
      70610.,  72260.,  73910.,  75560.,  98970.,  101180., 103390., 105600.,
      129775., 132550., 135325., 138100., 131000., 133800., 136600., 139400.,
      109850., 112100., 114350., 116600., 86195.,  87890.,  89585.,  91280.,
      72748.,  74104.,  75460.,  76816.,  101032., 102848., 104664., 106480.,
      131360., 133640., 135920., 138200., 132540., 134840., 137140., 139440.,
      110248., 112096., 113944., 115792., 85864.,  87256.,  88648.,  90040.,
      67116.,  68160.,  69204.,  70248.,  92646.,  94044.,  95442.,  96840.,
      119775., 121530., 123285., 125040., 120810., 122580., 124350., 126120.,
      99942.,  101364., 102786., 104208., 77439.,  78510.,  79581.,  80652.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   13.,   16.,   19.,   22.,
      25.,   28.,   31.,   34.,   37.,   40.,   43.,   46.,   49.,   52.,
      34.,   36.,   38.,   40.,   24.,   28.,   32.,   36.,   86.,   96.,
      106.,  116.,  126.,  136.,  146.,  156.,  166.,  176.,  186.,  196.,
      206.,  216.,  226.,  236.,  142.,  148.,  154.,  160.,  109.,  118.,
      127.,  136.,  317.,  338.,  359.,  380.,  401.,  422.,  443.,  464.,
      485.,  506.,  527.,  548.,  569.,  590.,  611.,  632.,  364.,  376.,
      388.,  400.,  289.,  298.,  307.,  316.,  737.,  758.,  779.,  800.,
      821.,  842.,  863.,  884.,  905.,  926.,  947.,  968.,  989.,  1010.,
      1031., 1052., 604.,  616.,  628.,  640.,  469.,  478.,  487.,  496.,
      1157., 1178., 1199., 1220., 1241., 1262., 1283., 1304., 1325., 1346.,
      1367., 1388., 1409., 1430., 1451., 1472., 844.,  856.,  868.,  880.,
      548.,  556.,  564.,  572.,  1270., 1288., 1306., 1324., 1342., 1360.,
      1378., 1396., 1414., 1432., 1450., 1468., 1486., 1504., 1522., 1540.,
      850.,  860.,  870.,  880.,  405.,  410.,  415.,  420.,  911.,  922.,
      933.,  944.,  955.,  966.,  977.,  988.,  999.,  1010., 1021., 1032.,
      1043., 1054., 1065., 1076., 582.,  588.,  594.,  600.,  7.,    14.,
      21.,   28.,   43.,   58.,   73.,   88.,   103.,  118.,  133.,  148.,
      163.,  178.,  193.,  208.,  223.,  238.,  253.,  268.,  136.,  144.,
      152.,  160.,  156.,  172.,  188.,  204.,  398.,  432.,  466.,  500.,
      534.,  568.,  602.,  636.,  670.,  704.,  738.,  772.,  806.,  840.,
      874.,  908.,  466.,  484.,  502.,  520.,  487.,  514.,  541.,  568.,
      1145., 1202., 1259., 1316., 1373., 1430., 1487., 1544., 1601., 1658.,
      1715., 1772., 1829., 1886., 1943., 2000., 1030., 1060., 1090., 1120.,
      1027., 1054., 1081., 1108., 2285., 2342., 2399., 2456., 2513., 2570.,
      2627., 2684., 2741., 2798., 2855., 2912., 2969., 3026., 3083., 3140.,
      1630., 1660., 1690., 1720., 1567., 1594., 1621., 1648., 3425., 3482.,
      3539., 3596., 3653., 3710., 3767., 3824., 3881., 3938., 3995., 4052.,
      4109., 4166., 4223., 4280., 2230., 2260., 2290., 2320., 1400., 1420.,
      1440., 1460., 3022., 3064., 3106., 3148., 3190., 3232., 3274., 3316.,
      3358., 3400., 3442., 3484., 3526., 3568., 3610., 3652., 1894., 1916.,
      1938., 1960., 891.,  902.,  913.,  924.,  1907., 1930., 1953., 1976.,
      1999., 2022., 2045., 2068., 2091., 2114., 2137., 2160., 2183., 2206.,
      2229., 2252., 1164., 1176., 1188., 1200., 13.,   26.,   39.,   52.,
      79.,   106.,  133.,  160.,  187.,  214.,  241.,  268.,  295.,  322.,
      349.,  376.,  403.,  430.,  457.,  484.,  238.,  252.,  266.,  280.,
      288.,  316.,  344.,  372.,  710.,  768.,  826.,  884.,  942.,  1000.,
      1058., 1116., 1174., 1232., 1290., 1348., 1406., 1464., 1522., 1580.,
      790.,  820.,  850.,  880.,  865.,  910.,  955.,  1000., 1973., 2066.,
      2159., 2252., 2345., 2438., 2531., 2624., 2717., 2810., 2903., 2996.,
      3089., 3182., 3275., 3368., 1696., 1744., 1792., 1840., 1765., 1810.,
      1855., 1900., 3833., 3926., 4019., 4112., 4205., 4298., 4391., 4484.,
      4577., 4670., 4763., 4856., 4949., 5042., 5135., 5228., 2656., 2704.,
      2752., 2800., 2665., 2710., 2755., 2800., 5693., 5786., 5879., 5972.,
      6065., 6158., 6251., 6344., 6437., 6530., 6623., 6716., 6809., 6902.,
      6995., 7088., 3616., 3664., 3712., 3760., 2252., 2284., 2316., 2348.,
      4774., 4840., 4906., 4972., 5038., 5104., 5170., 5236., 5302., 5368.,
      5434., 5500., 5566., 5632., 5698., 5764., 2938., 2972., 3006., 3040.,
      1377., 1394., 1411., 1428., 2903., 2938., 2973., 3008., 3043., 3078.,
      3113., 3148., 3183., 3218., 3253., 3288., 3323., 3358., 3393., 3428.,
      1746., 1764., 1782., 1800.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7863.,    8421.,    8979.,    9537.,    13032.,   13824.,   14616.,
      15408.,   19635.,   20685.,   21735.,   22785.,   23085.,   24255.,
      25425.,   26595.,   22104.,   23088.,   24072.,   25056.,   19401.,
      20175.,   20949.,   21723.,   21212.,   22244.,   23276.,   24308.,
      33088.,   34528.,   35968.,   37408.,   47580.,   49460.,   51340.,
      53220.,   53780.,   55820.,   57860.,   59900.,   49280.,   50976.,
      52672.,   54368.,   41780.,   43100.,   44420.,   45740.,   44725.,
      46375.,   48025.,   49675.,   67400.,   69680.,   71960.,   74240.,
      94225.,   97175.,   100125.,  103075.,  103975.,  107125.,  110275.,
      113425.,  92760.,   95360.,   97960.,   100560.,  76915.,   78925.,
      80935.,   82945.,   76945.,   79315.,   81685.,   84055.,   112280.,
      115520.,  118760.,  122000.,  152725.,  156875.,  161025.,  165175.,
      162475.,  166825.,  171175.,  175525.,  141480.,  145040.,  148600.,
      152160.,  114895.,  117625.,  120355.,  123085.,  109165.,  112255.,
      115345.,  118435.,  157160.,  161360.,  165560.,  169760.,  211225.,
      216575.,  221925.,  227275.,  220975.,  226525.,  232075.,  237625.,
      190200.,  194720.,  199240.,  203760.,  152875.,  156325.,  159775.,
      163225.,  136460.,  139220.,  141980.,  144740.,  192640.,  196384.,
      200128.,  203872.,  254380.,  259140.,  263900.,  268660.,  263780.,
      268700.,  273620.,  278540.,  223168.,  227168.,  231168.,  235168.,
      176612.,  179660.,  182708.,  185756.,  142071.,  144357.,  146643.,
      148929.,  198504.,  201600.,  204696.,  207792.,  259635.,  263565.,
      267495.,  271425.,  267885.,  271935.,  275985.,  280035.,  224472.,
      227760.,  231048.,  234336.,  176073.,  178575.,  181077.,  183579.,
      82707.,   86289.,   89871.,   93453.,   120888.,  125712.,  130536.,
      135360.,  164535.,  170625.,  176715.,  182805.,  167985.,  174195.,
      180405.,  186615.,  146088.,  151104.,  156120.,  161136.,  118437.,
      122235.,  126033.,  129831.,  161324.,  166388.,  171452.,  176516.,
      230656.,  237472.,  244288.,  251104.,  307980.,  316580.,  325180.,
      333780.,  314180.,  322940.,  331700.,  340460.,  268352.,  275424.,
      282496.,  289568.,  214148.,  219500.,  224852.,  230204.,  270265.,
      276955.,  283645.,  290335.,  381560.,  390560.,  399560.,  408560.,
      503725.,  515075.,  526425.,  537775.,  513475.,  525025.,  536575.,
      548125.,  433800.,  443120.,  452440.,  461760.,  342775.,  349825.,
      356875.,  363925.,  302485.,  309895.,  317305.,  324715.,  426440.,
      436400.,  446360.,  456320.,  562225.,  574775.,  587325.,  599875.,
      571975.,  584725.,  597475.,  610225.,  482520.,  492800.,  503080.,
      513360.,  380755.,  388525.,  396295.,  404065.,  334705.,  342835.,
      350965.,  359095.,  471320.,  482240.,  493160.,  504080.,  620725.,
      634475.,  648225.,  661975.,  630475.,  644425.,  658375.,  672325.,
      531240.,  542480.,  553720.,  564960.,  418735.,  427225.,  435715.,
      444205.,  357212.,  364004.,  370796.,  377588.,  497728.,  506848.,
      515968.,  525088.,  649180.,  660660.,  672140.,  683620.,  658580.,
      670220.,  681860.,  693500.,  549760.,  559136.,  568512.,  577888.,
      429620.,  436700.,  443780.,  450860.,  337875.,  343185.,  348495.,
      353805.,  467640.,  474768.,  481896.,  489024.,  606135.,  615105.,
      624075.,  633045.,  614385.,  623475.,  632565.,  641655.,  509736.,
      517056.,  524376.,  531696.,  396069.,  401595.,  407121.,  412647.,
      157551.,  164157.,  170763.,  177369.,  228744.,  237600.,  246456.,
      255312.,  309435.,  320565.,  331695.,  342825.,  312885.,  324135.,
      335385.,  346635.,  270072.,  279120.,  288168.,  297216.,  217473.,
      224295.,  231117.,  237939.,  301436.,  310532.,  319628.,  328724.,
      428224.,  440416.,  452608.,  464800.,  568380.,  583700.,  599020.,
      614340.,  574580.,  590060.,  605540.,  621020.,  487424.,  499872.,
      512320.,  524768.,  386516.,  395900.,  405284.,  414668.,  495805.,
      507535.,  519265.,  530995.,  695720.,  711440.,  727160.,  742880.,
      913225.,  932975.,  952725.,  972475.,  922975.,  942925.,  962875.,
      982825.,  774840.,  790880.,  806920.,  822960.,  608635.,  620725.,
      632815.,  644905.,  528025.,  540475.,  552925.,  565375.,  740600.,
      757280.,  773960.,  790640.,  971725.,  992675.,  1013625., 1034575.,
      981475.,  1002625., 1023775., 1044925., 823560.,  840560.,  857560.,
      874560.,  646615.,  659425.,  672235.,  685045.,  560245.,  573415.,
      586585.,  599755.,  785480.,  803120.,  820760.,  838400.,  1030225.,
      1052375., 1074525., 1096675., 1039975., 1062325., 1084675., 1107025.,
      872280.,  890240.,  908200.,  926160.,  684595.,  698125.,  711655.,
      725185.,  577964.,  588788.,  599612.,  610436.,  802816.,  817312.,
      831808.,  846304.,  1043980., 1062180., 1080380., 1098580., 1053380.,
      1071740., 1090100., 1108460., 876352.,  891104.,  905856.,  920608.,
      682628.,  693740.,  704852.,  715964.,  533679.,  542013.,  550347.,
      558681.,  736776.,  747936.,  759096.,  770256.,  952635.,  966645.,
      980655.,  994665.,  960885.,  975015.,  989145.,  1003275., 795000.,
      806352.,  817704.,  829056.,  616065.,  624615.,  633165.,  641715.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   120.,
      140.,   160.,   180.,   200.,   220.,   240.,   260.,   280.,   300.,
      320.,   340.,   235.,   249.,   263.,   277.,   142.,   170.,   198.,
      226.,   568.,   640.,   712.,   784.,   856.,   928.,   1000.,  1072.,
      1144.,  1216.,  1288.,  1360.,  1432.,  1504.,  1576.,  1648.,  1018.,
      1062.,  1106.,  1150.,  731.,   797.,   863.,   929.,   2224.,  2380.,
      2536.,  2692.,  2848.,  3004.,  3160.,  3316.,  3472.,  3628.,  3784.,
      3940.,  4096.,  4252.,  4408.,  4564.,  2669.,  2759.,  2849.,  2939.,
      2051.,  2117.,  2183.,  2249.,  5344.,  5500.,  5656.,  5812.,  5968.,
      6124.,  6280.,  6436.,  6592.,  6748.,  6904.,  7060.,  7216.,  7372.,
      7528.,  7684.,  4469.,  4559.,  4649.,  4739.,  3371.,  3437.,  3503.,
      3569.,  8464.,  8620.,  8776.,  8932.,  9088.,  9244.,  9400.,  9556.,
      9712.,  9868.,  10024., 10180., 10336., 10492., 10648., 10804., 6269.,
      6359.,  6449.,  6539.,  4086.,  4146.,  4206.,  4266.,  9544.,  9680.,
      9816.,  9952.,  10088., 10224., 10360., 10496., 10632., 10768., 10904.,
      11040., 11176., 11312., 11448., 11584., 6434.,  6510.,  6586.,  6662.,
      3069.,  3107.,  3145.,  3183.,  6936.,  7020.,  7104.,  7188.,  7272.,
      7356.,  7440.,  7524.,  7608.,  7692.,  7776.,  7860.,  7944.,  8028.,
      8112.,  8196.,  4451.,  4497.,  4543.,  4589.,  41.,    95.,    149.,
      203.,   304.,   420.,   536.,   652.,   768.,   884.,   1000.,  1116.,
      1232.,  1348.,  1464.,  1580.,  1696.,  1812.,  1928.,  2044.,  1039.,
      1101.,  1163.,  1225.,  1174.,  1298.,  1422.,  1546.,  3016.,  3280.,
      3544.,  3808.,  4072.,  4336.,  4600.,  4864.,  5128.,  5392.,  5656.,
      5920.,  6184.,  6448.,  6712.,  6976.,  3586.,  3726.,  3866.,  4006.,
      3719.,  3929.,  4139.,  4349.,  8776.,  9220.,  9664.,  10108., 10552.,
      10996., 11440., 11884., 12328., 12772., 13216., 13660., 14104., 14548.,
      14992., 15436., 7961.,  8195.,  8429.,  8663.,  7919.,  8129.,  8339.,
      8549.,  17656., 18100., 18544., 18988., 19432., 19876., 20320., 20764.,
      21208., 21652., 22096., 22540., 22984., 23428., 23872., 24316., 12641.,
      12875., 13109., 13343., 12119., 12329., 12539., 12749., 26536., 26980.,
      27424., 27868., 28312., 28756., 29200., 29644., 30088., 30532., 30976.,
      31420., 31864., 32308., 32752., 33196., 17321., 17555., 17789., 18023.,
      10878., 11034., 11190., 11346., 23512., 23840., 24168., 24496., 24824.,
      25152., 25480., 25808., 26136., 26464., 26792., 27120., 27448., 27776.,
      28104., 28432., 14762., 14934., 15106., 15278., 6945.,  7031.,  7117.,
      7203.,  14880., 15060., 15240., 15420., 15600., 15780., 15960., 16140.,
      16320., 16500., 16680., 16860., 17040., 17220., 17400., 17580., 9095.,
      9189.,  9283.,  9377.,  77.,    179.,   281.,   383.,   568.,   780.,
      992.,   1204.,  1416.,  1628.,  1840.,  2052.,  2264.,  2476.,  2688.,
      2900.,  3112.,  3324.,  3536.,  3748.,  1843.,  1953.,  2063.,  2173.,
      2206.,  2426.,  2646.,  2866.,  5464.,  5920.,  6376.,  6832.,  7288.,
      7744.,  8200.,  8656.,  9112.,  9568.,  10024., 10480., 10936., 11392.,
      11848., 12304., 6154.,  6390.,  6626.,  6862.,  6707.,  7061.,  7415.,
      7769.,  15328., 16060., 16792., 17524., 18256., 18988., 19720., 20452.,
      21184., 21916., 22648., 23380., 24112., 24844., 25576., 26308., 13253.,
      13631., 14009., 14387., 13787., 14141., 14495., 14849., 29968., 30700.,
      31432., 32164., 32896., 33628., 34360., 35092., 35824., 36556., 37288.,
      38020., 38752., 39484., 40216., 40948., 20813., 21191., 21569., 21947.,
      20867., 21221., 21575., 21929., 44608., 45340., 46072., 46804., 47536.,
      48268., 49000., 49732., 50464., 51196., 51928., 52660., 53392., 54124.,
      54856., 55588., 28373., 28751., 29129., 29507., 17670., 17922., 18174.,
      18426., 37480., 38000., 38520., 39040., 39560., 40080., 40600., 41120.,
      41640., 42160., 42680., 43200., 43720., 44240., 44760., 45280., 23090.,
      23358., 23626., 23894., 10821., 10955., 11089., 11223., 22824., 23100.,
      23376., 23652., 23928., 24204., 24480., 24756., 25032., 25308., 25584.,
      25860., 26136., 26412., 26688., 26964., 13739., 13881., 14023., 14165.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      60582.,   64974.,   69366.,   73758.,   100920.,  107160.,  113400.,
      119640.,  152610.,  160890.,  169170.,  177450.,  180090.,  189330.,
      198570.,  207810.,  172920.,  180696.,  188472.,  196248.,  152094.,
      158214.,  164334.,  170454.,  165352.,  173512.,  181672.,  189832.,
      258592.,  269984.,  281376.,  292768.,  372600.,  387480.,  402360.,
      417240.,  422040.,  438200.,  454360.,  470520.,  387360.,  400800.,
      414240.,  427680.,  328840.,  339304.,  349768.,  360232.,  350810.,
      363890.,  376970.,  390050.,  529480.,  547560.,  565640.,  583720.,
      741150.,  764550.,  787950.,  811350.,  818950.,  843950.,  868950.,
      893950.,  731400.,  752040.,  772680.,  793320.,  607010.,  622970.,
      638930.,  654890.,  607850.,  626690.,  645530.,  664370.,  887560.,
      913320.,  939080.,  964840.,  1207950., 1240950., 1273950., 1306950.,
      1285750., 1320350., 1354950., 1389550., 1120200., 1148520., 1176840.,
      1205160., 910130.,  931850.,  953570.,  975290.,  864890.,  889490.,
      914090.,  938690.,  1245640., 1279080., 1312520., 1345960., 1674750.,
      1717350., 1759950., 1802550., 1752550., 1796750., 1840950., 1885150.,
      1509000., 1545000., 1581000., 1617000., 1213250., 1240730., 1268210.,
      1295690., 1083688., 1105672., 1127656., 1149640., 1530144., 1559968.,
      1589792., 1619616., 2020920., 2058840., 2096760., 2134680., 2095960.,
      2135160., 2174360., 2213560., 1773600., 1805472., 1837344., 1869216.,
      1403848., 1428136., 1452424., 1476712., 1129638., 1147854., 1166070.,
      1184286., 1578552., 1603224., 1627896., 1652568., 2064930., 2096250.,
      2127570., 2158890., 2130810., 2163090., 2195370., 2227650., 1785720.,
      1811928., 1838136., 1864344., 1400862., 1420806., 1440750., 1460694.,
      656310.,  684894.,  713478.,  742062.,  959736.,  998232.,  1036728.,
      1075224., 1306770., 1355370., 1403970., 1452570., 1334250., 1383810.,
      1433370., 1482930., 1160760., 1200792., 1240824., 1280856., 941358.,
      971670.,  1001982., 1032294., 1282216., 1322632., 1363048., 1403464.,
      1833760., 1888160., 1942560., 1996960., 2449080., 2517720., 2586360.,
      2655000., 2498520., 2568440., 2638360., 2708280., 2134560., 2191008.,
      2247456., 2303904., 1703752., 1746472., 1789192., 1831912., 2150090.,
      2203490., 2256890., 2310290., 3036040., 3107880., 3179720., 3251560.,
      4008750., 4099350., 4189950., 4280550., 4086550., 4178750., 4270950.,
      4363150., 3453000., 3527400., 3601800., 3676200., 2728850., 2785130.,
      2841410., 2897690., 2407130., 2466290., 2525450., 2584610., 3394120.,
      3473640., 3553160., 3632680., 4475550., 4575750., 4675950., 4776150.,
      4553350., 4655150., 4756950., 4858750., 3841800., 3923880., 4005960.,
      4088040., 3031970., 3094010., 3156050., 3218090., 2664170., 2729090.,
      2794010., 2858930., 3752200., 3839400., 3926600., 4013800., 4942350.,
      5052150., 5161950., 5271750., 5020150., 5131550., 5242950., 5354350.,
      4230600., 4320360., 4410120., 4499880., 3335090., 3402890., 3470690.,
      3538490., 2845672., 2899912., 2954152., 3008392., 3965472., 4038304.,
      4111136., 4183968., 5172600., 5264280., 5355960., 5447640., 5247640.,
      5340600., 5433560., 5526520., 4380960., 4455840., 4530720., 4605600.,
      3423880., 3480424., 3536968., 3593512., 2693046., 2735454., 2777862.,
      2820270., 3727608., 3784536., 3841464., 3898392., 4831890., 4903530.,
      4975170., 5046810., 4897770., 4970370., 5042970., 5115570., 4063800.,
      4122264., 4180728., 4239192., 3157806., 3201942., 3246078., 3290214.,
      1252038., 1304814., 1357590., 1410366., 1818552., 1889304., 1960056.,
      2030808., 2460930., 2549850., 2638770., 2727690., 2488410., 2578290.,
      2668170., 2758050., 2148600., 2220888., 2293176., 2365464., 1730622.,
      1785126., 1839630., 1894134., 2399080., 2471752., 2544424., 2617096.,
      3408928., 3506336., 3603744., 3701152., 4525560., 4647960., 4770360.,
      4892760., 4575000., 4698680., 4822360., 4946040., 3881760., 3981216.,
      4080672., 4180128., 3078664., 3153640., 3228616., 3303592., 3949370.,
      4043090., 4136810., 4230530., 5542600., 5668200., 5793800., 5919400.,
      7276350., 7434150., 7591950., 7749750., 7354150., 7513550., 7672950.,
      7832350., 6174600., 6302760., 6430920., 6559080., 4850690., 4947290.,
      5043890., 5140490., 4206410., 4305890., 4405370., 4504850., 5900680.,
      6033960., 6167240., 6300520., 7743150., 7910550., 8077950., 8245350.,
      7820950., 7989950., 8158950., 8327950., 6563400., 6699240., 6835080.,
      6970920., 5153810., 5256170., 5358530., 5460890., 4463450., 4568690.,
      4673930., 4779170., 6258760., 6399720., 6540680., 6681640., 8209950.,
      8386950., 8563950., 8740950., 8287750., 8466350., 8644950., 8823550.,
      6952200., 7095720., 7239240., 7382760., 5456930., 5565050., 5673170.,
      5781290., 4607656., 4694152., 4780648., 4867144., 6400800., 6516640.,
      6632480., 6748320., 8324280., 8469720., 8615160., 8760600., 8399320.,
      8546040., 8692760., 8839480., 6988320., 7106208., 7224096., 7341984.,
      5443912., 5532712., 5621512., 5710312., 4256454., 4323054., 4389654.,
      4456254., 5876664., 5965848., 6055032., 6144216., 7598850., 7710810.,
      7822770., 7934730., 7664730., 7777650., 7890570., 8003490., 6341880.,
      6432600., 6523320., 6614040., 4914750., 4983078., 5051406., 5119734.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      836.,    980.,    1124.,   1268.,   1412.,   1556.,   1700.,   1844.,
      1988.,   2132.,   2276.,   2420.,   1734.,   1838.,   1942.,   2046.,
      940.,    1148.,   1356.,   1564.,   4072.,   4616.,   5160.,   5704.,
      6248.,   6792.,   7336.,   7880.,   8424.,   8968.,   9512.,   10056.,
      10600.,  11144.,  11688.,  12232.,  7676.,   8012.,   8348.,   8684.,
      5290.,   5794.,   6298.,   6802.,   16556.,  17756.,  18956.,  20156.,
      21356.,  22556.,  23756.,  24956.,  26156.,  27356.,  28556.,  29756.,
      30956.,  32156.,  33356.,  34556.,  20386.,  21082.,  21778.,  22474.,
      15370.,  15874.,  16378.,  16882.,  40556.,  41756.,  42956.,  44156.,
      45356.,  46556.,  47756.,  48956.,  50156.,  51356.,  52556.,  53756.,
      54956.,  56156.,  57356.,  58556.,  34306.,  35002.,  35698.,  36394.,
      25450.,  25954.,  26458.,  26962.,  64556.,  65756.,  66956.,  68156.,
      69356.,  70556.,  71756.,  72956.,  74156.,  75356.,  76556.,  77756.,
      78956.,  80156.,  81356.,  82556.,  48226.,  48922.,  49618.,  50314.,
      31500.,  31964.,  32428.,  32892.,  73896.,  74952.,  76008.,  77064.,
      78120.,  79176.,  80232.,  81288.,  82344.,  83400.,  84456.,  85512.,
      86568.,  87624.,  88680.,  89736.,  50012.,  50604.,  51196.,  51788.,
      23870.,  24166.,  24462.,  24758.,  54084.,  54740.,  55396.,  56052.,
      56708.,  57364.,  58020.,  58676.,  59332.,  59988.,  60644.,  61300.,
      61956.,  62612.,  63268.,  63924.,  34790.,  35150.,  35510.,  35870.,
      270.,    694.,    1118.,   1542.,   2276.,   3188.,   4100.,   5012.,
      5924.,   6836.,   7748.,   8660.,   9572.,   10484.,  11396.,  12308.,
      13220.,  14132.,  15044.,  15956.,  8118.,   8606.,   9094.,   9582.,
      9100.,   10076.,  11052.,  12028.,  23464.,  25544.,  27624.,  29704.,
      31784.,  33864.,  35944.,  38024.,  40104.,  42184.,  44264.,  46344.,
      48424.,  50504.,  52584.,  54664.,  28124.,  29228.,  30332.,  31436.,
      29050.,  30706.,  32362.,  34018.,  68684.,  72188.,  75692.,  79196.,
      82700.,  86204.,  89708.,  93212.,  96716.,  100220., 103724., 107228.,
      110732., 114236., 117740., 121244., 62578.,  64426.,  66274.,  68122.,
      62170.,  63826.,  65482.,  67138.,  138764., 142268., 145772., 149276.,
      152780., 156284., 159788., 163292., 166796., 170300., 173804., 177308.,
      180812., 184316., 187820., 191324., 99538.,  101386., 103234., 105082.,
      95290.,  96946.,  98602.,  100258., 208844., 212348., 215852., 219356.,
      222860., 226364., 229868., 233372., 236876., 240380., 243884., 247388.,
      250892., 254396., 257900., 261404., 136498., 138346., 140194., 142042.,
      85740.,  86972.,  88204.,  89436.,  185448., 188040., 190632., 193224.,
      195816., 198408., 201000., 203592., 206184., 208776., 211368., 213960.,
      216552., 219144., 221736., 224328., 116540., 117900., 119260., 120620.,
      54830.,  55510.,  56190.,  56870.,  117540., 118964., 120388., 121812.,
      123236., 124660., 126084., 127508., 128932., 130356., 131780., 133204.,
      134628., 136052., 137476., 138900., 71894.,  72638.,  73382.,  74126.,
      510.,    1318.,   2126.,   2934.,   4292.,   5972.,   7652.,   9332.,
      11012.,  12692.,  14372.,  16052.,  17732.,  19412.,  21092.,  22772.,
      24452.,  26132.,  27812.,  29492.,  14502.,  15374.,  16246.,  17118.,
      17260.,  19004.,  20748.,  22492.,  42856.,  46472.,  50088.,  53704.,
      57320.,  60936.,  64552.,  68168.,  71784.,  75400.,  79016.,  82632.,
      86248.,  89864.,  93480.,  97096.,  48572.,  50444.,  52316.,  54188.,
      52810.,  55618.,  58426.,  61234.,  120812., 126620., 132428., 138236.,
      144044., 149852., 155660., 161468., 167276., 173084., 178892., 184700.,
      190508., 196316., 202124., 207932., 104770., 107770., 110770., 113770.,
      108970., 111778., 114586., 117394., 236972., 242780., 248588., 254396.,
      260204., 266012., 271820., 277628., 283436., 289244., 295052., 300860.,
      306668., 312476., 318284., 324092., 164770., 167770., 170770., 173770.,
      165130., 167938., 170746., 173554., 353132., 358940., 364748., 370556.,
      376364., 382172., 387980., 393788., 399596., 405404., 411212., 417020.,
      422828., 428636., 434444., 440252., 224770., 227770., 230770., 233770.,
      139980., 141980., 143980., 145980., 297000., 301128., 305256., 309384.,
      313512., 317640., 321768., 325896., 330024., 334152., 338280., 342408.,
      346536., 350664., 354792., 358920., 183068., 185196., 187324., 189452.,
      85790.,  86854.,  87918.,  88982.,  180996., 183188., 185380., 187572.,
      189764., 191956., 194148., 196340., 198532., 200724., 202916., 205108.,
      207300., 209492., 211684., 213876., 108998., 110126., 111254., 112382.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      351.,   560.,   820.,   940.,   1060.,  980.,   837.,   892.,   1360.,
      1920.,  2130.,  2340.,  2096.,  1744.,  1820.,  2700.,  3725.,  4050.,
      4375.,  3840.,  3140.,  3080.,  4450.,  6000.,  6325.,  6650.,  5730.,
      4610.,  4340.,  6200.,  8275.,  8600.,  8925.,  7620.,  6080.,  5296.,
      7440.,  9780.,  10090., 10400., 8752.,  6892.,  5445.,  7580.,  9880.,
      10150., 10420., 8696.,  6795.,  3438.,  4970.,  6700.,  6820.,  6940.,
      5978.,  4806.,  6478.,  9200.,  12210., 12420., 12630., 10720., 8506.,
      10640., 14950., 19650., 19975., 20300., 17070., 13430., 11900., 16700.,
      21925., 22250., 22575., 18960., 14900., 13160., 18450., 24200., 24525.,
      24850., 20850., 16370., 13822., 19200., 24970., 25280., 25590., 21296.,
      16594., 12942., 17870., 23110., 23380., 23650., 19574., 15174., 6525.,
      9380.,  12580., 12700., 12820., 10976., 8775.,  12064., 17040., 22500.,
      22710., 22920., 19344., 15268., 19460., 27200., 35575., 35900., 36225.,
      30300., 23720., 20720., 28950., 37850., 38175., 38500., 32190., 25190.,
      21980., 30700., 40125., 40450., 40775., 34080., 26660., 22348., 30960.,
      40160., 40470., 40780., 33840., 26296., 20439., 28160., 36340., 36610.,
      36880., 30452., 23553.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    10.,   16.,   22.,   22.,   15.,   10.,   32.,   68.,
      89.,   110.,  96.,   60.,   42.,   114.,  219.,  264.,  309.,  252.,
      150.,  102.,  249.,  444.,  489.,  534.,  417.,  240.,  162.,  384.,
      669.,  714.,  759.,  582.,  330.,  196.,  440.,  734.,  773.,  812.,
      600.,  330.,  147.,  322.,  526.,  550.,  574.,  416.,  225.,  10.,
      31.,   64.,   97.,   130.,  103.,  60.,   73.,   176.,  311.,  386.,
      461.,  348.,  195.,  204.,  465.,  786.,  912.,  1038., 765.,  420.,
      399.,  870.,  1416., 1542., 1668., 1200., 645.,  594.,  1275., 2046.,
      2172., 2298., 1635., 870.,  529.,  1124., 1787., 1880., 1973., 1392.,
      735.,  336.,  709.,  1120., 1171., 1222., 857.,  450.,  19.,   58.,
      118.,  178.,  238.,  184.,  105.,  136.,  320.,  554.,  683.,  812.,
      600.,  330.,  366.,  816.,  1353., 1560., 1767., 1278., 690.,  696.,
      1491., 2388., 2595., 2802., 1983., 1050., 1026., 2166., 3423., 3630.,
      3837., 2688., 1410., 862.,  1808., 2840., 2987., 3134., 2184., 1140.,
      525.,  1096., 1714., 1792., 1870., 1298., 675.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2529.,   4084.,   6035.,   6965.,   7895.,   7348.,   6309.,   6620.,
      10160.,  14420.,  16060.,  17700.,  15920.,  13292.,  13735.,  20460.,
      28325.,  30875.,  33425.,  29420.,  24115.,  23605.,  34180.,  46175.,
      48725.,  51275.,  44260.,  35665.,  33475.,  47900.,  64025.,  66575.,
      69125.,  59100.,  47215.,  41228.,  57968.,  76260.,  78700.,  81140.,
      68336.,  53852.,  42597.,  59332.,  77375.,  79505.,  81635.,  68164.,
      53289.,  26343.,  38188.,  51605.,  52535.,  53465.,  46156.,  37179.,
      50132.,  71312.,  94780.,  96420.,  98060.,  83344.,  66212.,  82825.,
      116500., 153275., 155825., 158375., 133300., 104965., 92695.,  130220.,
      171125., 173675., 176225., 148140., 116515., 102565., 143940., 188975.,
      191525., 194075., 162980., 128065., 108260., 150480., 195820., 198260.,
      200700., 167120., 130292., 101691., 140476., 181745., 183875., 186005.,
      154012., 119439., 50157.,  72292.,  97175.,  98105.,  99035.,  84964.,
      68049.,  93644.,  132464., 175140., 176780., 178420., 150768., 119132.,
      151915., 212540., 278225., 280775., 283325., 237180., 185815., 161785.,
      226260., 296075., 298625., 301175., 252020., 197365., 171655., 239980.,
      313925., 316475., 319025., 266860., 208915., 175292., 242992., 315380.,
      317820., 320260., 265904., 206732., 160785., 221620., 286115., 288245.,
      290375., 239860., 185589.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     22.,    59.,    101.,   143.,   150.,   105.,   58.,    204.,
      454.,   610.,   766.,   684.,   434.,   279.,   786.,   1545.,  1887.,
      2229.,  1842.,  1107.,  729.,   1806.,  3255.,  3597.,  3939.,  3102.,
      1797.,  1179.,  2826.,  4965.,  5307.,  5649.,  4362.,  2487.,  1474.,
      3324.,  5566.,  5866.,  6166.,  4572.,  2522.,  1121.,  2462.,  4031.,
      4217.,  4403.,  3198.,  1733.,  59.,    202.,   437.,   695.,   953.,
      762.,   447.,   526.,   1284.,  2290.,  2878.,  3466.,  2628.,  1478.,
      1521.,  3486.,  5919.,  6909.,  7899.,  5838.,  3213.,  3051.,  6666.,
      10869., 11859., 12849., 9258.,  4983.,  4581.,  9846.,  15819., 16809.,
      17799., 12678., 6753.,  4102.,  8724.,  13882., 14614., 15346., 10836.,
      5726.,  2615.,  5522.,  8729.,  9131.,  9533.,  6690.,  3515.,  113.,
      382.,   815.,   1289.,  1763.,  1374.,  789.,   994.,   2364.,  4126.,
      5146.,  6166.,  4572.,  2522.,  2763.,  6186.,  10293., 11931., 13569.,
      9834.,  5319.,  5373.,  11526., 18483., 20121., 21759., 15414., 8169.,
      7983.,  16866., 26673., 28311., 29949., 20994., 11019., 6730.,  14124.,
      22198., 23362., 24526., 17100., 8930.,  4109.,  8582.,  13427., 14045.,
      14663., 10182., 5297.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19134.,   31112.,   46210.,   53530.,   60850.,   56840.,   48942.,
      50920.,   78432.,   111640.,  124600.,  137560.,  124000.,  103720.,
      106610.,  159160.,  220750.,  240950.,  261150.,  230200.,  188930.,
      184730.,  267800.,  362150.,  382350.,  402550.,  347800.,  280490.,
      262850.,  376440.,  503550.,  523750.,  543950.,  465400.,  372050.,
      325288.,  457568.,  602200.,  621560.,  640920.,  540000.,  425704.,
      336942.,  469448.,  612370.,  629290.,  646210.,  539720.,  422046.,
      206118.,  299240.,  404890.,  412210.,  419530.,  362600.,  292374.,
      394312.,  561376.,  746680.,  759640.,  772600.,  657120.,  522376.,
      653450.,  919640.,  1210550., 1230750., 1250950., 1053400., 829850.,
      731570.,  1028280., 1351950., 1372150., 1392350., 1171000., 921410.,
      809690.,  1136920., 1493350., 1513550., 1533750., 1288600., 1012970.,
      856840.,  1191392., 1550840., 1570200., 1589560., 1324000., 1032520.,
      806166.,  1113896., 1441450., 1458370., 1475290., 1221800., 947718.,
      393102.,  567368.,  763570.,  770890.,  778210.,  668360.,  535806.,
      737704.,  1044320., 1381720., 1394680., 1407640., 1190240., 941032.,
      1200290., 1680120., 2200350., 2220550., 2240750., 1876600., 1470770.,
      1278410., 1788760., 2341750., 2361950., 2382150., 1994200., 1562330.,
      1356530., 1897400., 2483150., 2503350., 2523550., 2111800., 1653890.,
      1388392., 1925216., 2499480., 2518840., 2538200., 2108000., 1639336.,
      1275390., 1758344., 2270530., 2287450., 2304370., 1903880., 1473390.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     140.,    394.,    706.,    1018.,   1100.,  782.,    380.,
      1432.,   3284.,   4484.,   5684.,   5144.,   3292.,  2010.,   5796.,
      11550.,  14214.,  16878.,  14052.,  8490.,   5490.,  13716.,  24870.,
      27534.,  30198.,  23892.,  13890.,  8970.,   21636., 38190.,  40854.,
      43518.,  33732.,  19290.,  11420.,  25816.,  43316., 45668.,  48020.,
      35672.,  19708.,  8750.,   19244.,  31546.,  33010., 34474.,  25068.,
      13598.,  390.,    1436.,   3202.,   5242.,   7282.,  5852.,   3446.,
      3980.,   9784.,   17540.,  22196.,  26852.,  20408., 11500.,  11730.,
      26964.,  45894.,  53742.,  61590.,  45588.,  25122., 23850.,  52164.,
      85134.,  92982.,  100830., 72708.,  39162.,  35970., 77364.,  124374.,
      132222., 140070., 99828.,  53202.,  32300.,  68728., 109412., 115220.,
      121028., 85496.,  45196.,  20630.,  43580.,  68914., 72106.,  75298.,
      52860.,  27782.,  750.,    2732.,   6010.,   9778.,  13546.,  10604.,
      6110.,   7580.,   18136.,  31796.,  39908.,  48020., 35672.,  19708.,
      21450.,  48132.,  80238.,  93270.,  106302., 77124., 41754.,  42210.,
      90612.,  145398., 158430., 171462., 121524., 64434., 62970.,  133092.,
      210558., 223590., 236622., 165924., 87114.,  53180., 111640., 175508.,
      184772., 194036., 135320., 70684.,  32510.,  67916., 106282., 111202.,
      116122., 80652.,  41966.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      621.,   702.,   1006.,  1120.,  1490.,  1640.,  1715.,  1880.,  1940.,
      2120.,  1810.,  1960.,  1557.,  1674.,  1634.,  1784.,  2512.,  2720.,
      3570.,  3840.,  3970.,  4260.,  4370.,  4680.,  3936.,  4192.,  3290.,
      3488.,  3400.,  3640.,  5070.,  5400.,  7025.,  7450.,  7650.,  8100.,
      8275.,  8750.,  7290.,  7680.,  5980.,  6280.,  5815.,  6160.,  8430.,
      8900.,  11400., 12000., 12025., 12650., 12650., 13300., 10930., 11460.,
      8815.,  9220.,  8230.,  8680.,  11790., 12400., 15775., 16550., 16400.,
      17200., 17025., 17850., 14570., 15240., 11650., 12160., 10190., 10592.,
      14336., 14880., 18870., 19560., 19470., 20180., 20070., 20800., 16912.,
      17504., 13334., 13784., 10557., 10890., 14710., 15160., 19190., 19760.,
      19715., 20300., 20240., 20840., 16906., 17392., 13221., 13590., 6354.,
      6876.,  9238.,  9940.,  12515., 13400., 12740., 13640., 12965., 13880.,
      11218., 11956., 9054.,  9612.,  12218., 12956., 17408., 18400., 23170.,
      24420., 23570., 24840., 23970., 25260., 20400., 21440., 16226., 17012.,
      20305., 21280., 28590., 29900., 37650., 39300., 38275., 39950., 38900.,
      40600., 32770., 34140., 25825., 26860., 22720., 23800., 31950., 33400.,
      42025., 43850., 42650., 44500., 43275., 45150., 36410., 37920., 28660.,
      29800., 25135., 26320., 35310., 36900., 46400., 48400., 47025., 49050.,
      47650., 49700., 40050., 41700., 31495., 32740., 26654., 27644., 37072.,
      38400., 48270., 49940., 48870., 50560., 49470., 51180., 41216., 42592.,
      32150., 33188., 25110., 25884., 34702., 35740., 44915., 46220., 45440.,
      46760., 45965., 47300., 38074., 39148., 29538., 30348., 12087., 13050.,
      17470., 18760., 23540., 25160., 23765., 25400., 23990., 25640., 20626.,
      21952., 16551., 17550., 22802., 24128., 32304., 34080., 42770., 45000.,
      43170., 45420., 43570., 45840., 36864., 38688., 29162., 30536., 37210.,
      38920., 52110., 54400., 68275., 71150., 68900., 71800., 69525., 72450.,
      58250., 60600., 45670., 47440., 39625., 41440., 55470., 57900., 72650.,
      75700., 73275., 76350., 73900., 77000., 61890., 64380., 48505., 50380.,
      42040., 43960., 58830., 61400., 77025., 80250., 77650., 80900., 78275.,
      81550., 65530., 68160., 51340., 53320., 43118., 44696., 59808., 61920.,
      77670., 80320., 78270., 80940., 78870., 81560., 65520., 67680., 50966.,
      52592., 39663., 40878., 54694., 56320., 70640., 72680., 71165., 73220.,
      71690., 73760., 59242., 60904., 45855., 47106.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    14.,   20.,   26.,   32.,   38.,   44.,
      39.,   44.,   27.,   30.,   15.,   20.,   52.,   64.,   115.,  136.,
      157.,  178.,  199.,  220.,  176.,  192.,  111.,  120.,  72.,   84.,
      201.,  228.,  393.,  438.,  483.,  528.,  573.,  618.,  471.,  504.,
      282.,  300.,  192.,  204.,  471.,  498.,  843.,  888.,  933.,  978.,
      1023., 1068., 801.,  834.,  462.,  480.,  312.,  324.,  741.,  768.,
      1293., 1338., 1383., 1428., 1473., 1518., 1131., 1164., 642.,  660.,
      381.,  392.,  856.,  880.,  1429., 1468., 1507., 1546., 1585., 1624.,
      1172., 1200., 645.,  660.,  287.,  294.,  629.,  644.,  1028., 1052.,
      1076., 1100., 1124., 1148., 815.,  832.,  441.,  450.,  10.,   20.,
      41.,   62.,   95.,   128.,  161.,  194.,  227.,  260.,  183.,  206.,
      108.,  120.,  123.,  146.,  304.,  352.,  547.,  622.,  697.,  772.,
      847.,  922.,  644.,  696.,  363.,  390.,  369.,  408.,  849.,  930.,
      1446., 1572., 1698., 1824., 1950., 2076., 1443., 1530., 795.,  840.,
      759.,  798.,  1659., 1740., 2706., 2832., 2958., 3084., 3210., 3336.,
      2313., 2400., 1245., 1290., 1149., 1188., 2469., 2550., 3966., 4092.,
      4218., 4344., 4470., 4596., 3183., 3270., 1695., 1740., 1029., 1058.,
      2188., 2248., 3481., 3574., 3667., 3760., 3853., 3946., 2720., 2784.,
      1437., 1470., 656.,  672.,  1385., 1418., 2189., 2240., 2291., 2342.,
      2393., 2444., 1679., 1714., 882.,  900.,  19.,   38.,   77.,   116.,
      176.,  236.,  296.,  356.,  416.,  476.,  327.,  368.,  189.,  210.,
      231.,  272.,  556.,  640.,  979.,  1108., 1237., 1366., 1495., 1624.,
      1112., 1200., 615.,  660.,  666.,  732.,  1497., 1632., 2499., 2706.,
      2913., 3120., 3327., 3534., 2415., 2556., 1308., 1380., 1326., 1392.,
      2847., 2982., 4569., 4776., 4983., 5190., 5397., 5604., 3825., 3966.,
      2028., 2100., 1986., 2052., 4197., 4332., 6639., 6846., 7053., 7260.,
      7467., 7674., 5235., 5376., 2748., 2820., 1677., 1724., 3520., 3616.,
      5533., 5680., 5827., 5974., 6121., 6268., 4268., 4368., 2229., 2280.,
      1025., 1050., 2141., 2192., 3350., 3428., 3506., 3584., 3662., 3740.,
      2543., 2596., 1323., 1350.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4581.,   5211.,   7496.,   8384.,   11185.,  12355.,  12955.,  14245.,
      14725.,  16135.,  13808.,  14984.,  11925.,  12843.,  12352.,  13528.,
      19088.,  20720.,  27240.,  29360.,  30400.,  32680.,  33560.,  36000.,
      30320.,  32336.,  25408.,  26968.,  26045.,  27935.,  38960.,  41560.,
      54125.,  57475.,  59075.,  62625.,  64025.,  67775.,  56520.,  59600.,
      46445.,  48815.,  45155.,  47885.,  65560.,  69280.,  88775.,  93525.,
      93725.,  98675.,  98675.,  103825., 85360.,  89560.,  68915.,  72125.,
      64265.,  67835.,  92160.,  97000.,  123425., 129575., 128375., 134725.,
      133325., 139875., 114200., 119520., 91385.,  95435.,  80056.,  83248.,
      112688., 117008., 148400., 153880., 153160., 158800., 157920., 163720.,
      133136., 137840., 105016., 108592., 83205.,  85851.,  115976., 119552.,
      151345., 155875., 155515., 160165., 159685., 164455., 133424., 137288.,
      104373., 107307., 49563.,  53721.,  72176.,  77768.,  97915.,  104965.,
      99685.,  106855., 101455., 108745., 87896.,  93776.,  71019.,  75465.,
      95848.,  101728., 136688., 144592., 182080., 192040., 185240., 195360.,
      188400., 198680., 160464., 168752., 127720., 133984., 159815., 167585.,
      225160., 235600., 296675., 309825., 301625., 314975., 306575., 320125.,
      258400., 269320., 203735., 211985., 178925., 187535., 251760., 263320.,
      331325., 345875., 336275., 351025., 341225., 356175., 287240., 299280.,
      226205., 235295., 198035., 207485., 278360., 291040., 365975., 381925.,
      370925., 387075., 375875., 392225., 316080., 329240., 248675., 258605.,
      210592., 218488., 293008., 303600., 381640., 394960., 386400., 399880.,
      391160., 404800., 326000., 336976., 254368., 262648., 198747., 204921.,
      274736., 283016., 355675., 366085., 359845., 370375., 364015., 374665.,
      301592., 310160., 234027., 240489., 94545.,  102231., 136856., 147152.,
      184645., 197575., 186415., 199465., 188185., 201355., 161984., 172568.,
      130113., 138087., 179344., 189928., 254288., 268464., 336920., 354720.,
      340080., 358040., 343240., 361360., 290608., 305168., 230032., 241000.,
      293585., 307235., 411360., 429640., 539225., 562175., 544175., 567325.,
      549125., 572475., 460280., 479040., 361025., 375155., 312695., 327185.,
      437960., 457360., 573875., 598225., 578825., 603375., 583775., 608525.,
      489120., 509000., 383495., 398465., 331805., 347135., 464560., 485080.,
      608525., 634275., 613475., 639425., 618425., 644575., 517960., 538960.,
      405965., 421775., 341128., 353728., 473328., 490192., 614880., 636040.,
      619640., 640960., 624400., 645880., 518864., 536112., 403720., 416704.,
      314289., 323991., 433496., 446480., 560005., 576295., 564175., 580585.,
      568345., 584875., 469760., 483032., 363681., 373671.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    85.,    127.,   169.,   211.,   253.,
      295.,   272.,   308.,   193.,   215.,   88.,    124.,   340.,   428.,
      788.,   944.,   1100.,  1256.,  1412.,  1568.,  1276.,  1396.,  816.,
      884.,   489.,   579.,   1416.,  1620.,  2829.,  3171.,  3513.,  3855.,
      4197.,  4539.,  3492.,  3744.,  2109.,  2247.,  1389.,  1479.,  3456.,
      3660.,  6249.,  6591.,  6933.,  7275.,  7617.,  7959.,  6012.,  6264.,
      3489.,  3627.,  2289.,  2379.,  5496.,  5700.,  9669.,  10011., 10353.,
      10695., 11037., 11379., 8532.,  8784.,  4869.,  5007.,  2884.,  2968.,
      6508.,  6692.,  10904., 11204., 11504., 11804., 12104., 12404., 8980.,
      9196.,  4956.,  5072.,  2201.,  2255.,  4836.,  4952.,  7921.,  8107.,
      8293.,  8479.,  8665.,  8851.,  6296.,  6428.,  3413.,  3483.,  59.,
      137.,   280.,   444.,   679.,   937.,   1195.,  1453.,  1711.,  1969.,
      1388.,  1568.,  823.,   917.,   916.,   1096.,  2284.,  2660.,  4136.,
      4724.,  5312.,  5900.,  6488.,  7076.,  4948.,  5356.,  2796.,  3008.,
      2811.,  3117.,  6492.,  7128.,  11091., 12081., 13071., 14061., 15051.,
      16041., 11160., 11844., 6159.,  6513.,  5871.,  6177.,  12852., 13488.,
      20991., 21981., 22971., 23961., 24951., 25941., 18000., 18684., 9699.,
      10053., 8931.,  9237.,  19212., 19848., 30891., 31881., 32871., 33861.,
      34851., 35841., 24840., 25524., 13239., 13593., 8032.,  8260.,  17092.,
      17564., 27212., 27944., 28676., 29408., 30140., 30872., 21292., 21796.,
      11256., 11516., 5135.,  5261.,  10848., 11108., 17155., 17557., 17959.,
      18361., 18763., 19165., 13172., 13448., 6923.,  7065.,  113.,   263.,
      532.,   840.,   1273.,  1747.,  2221.,  2695.,  3169.,  3643.,  2504.,
      2828.,  1453.,  1619.,  1744.,  2068.,  4228.,  4892.,  7484.,  8504.,
      9524.,  10544., 11564., 12584., 8620.,  9316.,  4776.,  5132.,  5133.,
      5655.,  11568., 12636., 19353., 20991., 22629., 24267., 25905., 27543.,
      18828., 19944., 10209., 10779., 10353., 10875., 22248., 23316., 35733.,
      37371., 39009., 40647., 42285., 43923., 29988., 31104., 15909., 16479.,
      15573., 16095., 32928., 33996., 52113., 53751., 55389., 57027., 58665.,
      60303., 41148., 42264., 21609., 22179., 13180., 13552., 27676., 28436.,
      43520., 44684., 45848., 47012., 48176., 49340., 33604., 34396., 17556.,
      17960., 8069.,  8267.,  16860., 17264., 26389., 27007., 27625., 28243.,
      28861., 29479., 20048., 20468., 10433., 10647.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      35118.,   40086.,   57784.,   64792.,   86570.,   95810.,   100610.,
      110810.,  114650.,  125810.,  107800.,  117112.,  93294.,   100566.,
      95960.,   105272.,  148704.,  161632.,  212680.,  229480.,  237800.,
      255880.,  262920.,  282280.,  237920.,  253920.,  199640.,  212024.,
      203770.,  218770.,  305320.,  325960.,  424750.,  451350.,  464150.,
      492350.,  503550.,  533350.,  445000.,  469480.,  366010.,  384850.,
      355810.,  377530.,  517000.,  546600.,  700550.,  738350.,  739950.,
      779350.,  779350.,  820350.,  674600.,  708040.,  544930.,  570490.,
      507850.,  536290.,  728680.,  767240.,  976350.,  1025350., 1015750.,
      1066350., 1055150., 1107350., 904200.,  946600.,  723850.,  756130.,
      634616.,  660056.,  893536.,  927968.,  1177000., 1220680., 1214920.,
      1259880., 1252840., 1299080., 1056480., 1093984., 833528.,  862040.,
      660654.,  681750.,  921016.,  949528.,  1202090., 1238210., 1235330.,
      1272410., 1268570., 1306610., 1060120., 1090936., 829422.,  852822.,
      391446.,  424638.,  570520.,  615160.,  774530.,  830810.,  788570.,
      845810.,  802610.,  860810.,  695800.,  742744.,  562518.,  598014.,
      759224.,  806168.,  1083232., 1146336., 1443560., 1523080., 1468680.,
      1549480., 1493800., 1575880., 1272800., 1338976., 1013432., 1063448.,
      1268050., 1330090., 1787080., 1870440., 2355350., 2460350., 2394750.,
      2501350., 2434150., 2542350., 2052200., 2139400., 1618450., 1684330.,
      1420090., 1488850., 1998760., 2091080., 2631150., 2747350., 2670550.,
      2788350., 2709950., 2829350., 2281800., 2377960., 1797370., 1869970.,
      1572130., 1647610., 2210440., 2311720., 2906950., 3034350., 2946350.,
      3075350., 2985750., 3116350., 2511400., 2616520., 1976290., 2055610.,
      1674200., 1737272., 2329824., 2414432., 3035080., 3141480., 3073000.,
      3180680., 3110920., 3219880., 2593120., 2680800., 2023640., 2089784.,
      1581462., 1630782., 2186392., 2252536., 2830850., 2914010., 2864090.,
      2948210., 2897330., 2982410., 2400760., 2469208., 1863126., 1914750.,
      747774.,  809190.,  1083256., 1165528., 1462490., 1565810., 1476530.,
      1580810., 1490570., 1595810., 1283800., 1368376., 1031742., 1095462.,
      1422488., 1507064., 2017760., 2131040., 2674440., 2816680., 2699560.,
      2843080., 2724680., 2869480., 2307680., 2424032., 1827224., 1914872.,
      2332330., 2441410., 3268840., 3414920., 4285950., 4469350., 4325350.,
      4510350., 4364750., 4551350., 3659400., 3809320., 2870890., 2983810.,
      2484370., 2600170., 3480520., 3635560., 4561750., 4756350., 4601150.,
      4797350., 4640550., 4838350., 3889000., 4047880., 3049810., 3169450.,
      2636410., 2758930., 3692200., 3856200., 4837550., 5043350., 4876950.,
      5084350., 4916350., 5125350., 4118600., 4286440., 3228730., 3355090.,
      2713784., 2814488., 3766112., 3900896., 4893160., 5062280., 4931080.,
      5101480., 4969000., 5140680., 4129760., 4267616., 3213752., 3317528.,
      2502270., 2579814., 3451768., 3555544., 4459610., 4589810., 4492850.,
      4624010., 4526090., 4658210., 3741400., 3847480., 2896830., 2976678.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,    324.,    578.,    890.,    1202.,   1514.,
      1826.,   2138.,   2020.,   2292.,   1454.,   1622.,   580.,    852.,
      2424.,   3096.,   5788.,   6988.,   8188.,   9388.,   10588.,  11788.,
      9688.,   10616.,  6244.,   6772.,   3570.,   4266.,   10572.,  12156.,
      21390.,  24054.,  26718.,  29382.,  32046.,  34710.,  26844.,  28812.,
      16290.,  17370.,  10530.,  11226.,  26412.,  27996.,  48030.,  50694.,
      53358.,  56022.,  58686.,  61350.,  46524.,  48492.,  27090.,  28170.,
      17490.,  18186.,  42252.,  43836.,  74670.,  77334.,  79998.,  82662.,
      85326.,  87990.,  66204.,  68172.,  37890.,  38970.,  22420.,  23076.,
      50712.,  52152.,  85132.,  87484.,  89836.,  92188.,  94540.,  96892.,
      70264.,  71960.,  38836.,  39748.,  17230.,  17654.,  37908.,  38820.,
      62162.,  63626.,  65090.,  66554.,  68018.,  69482.,  49476.,  50516.,
      26846.,  27398.,  390.,    1006.,   2052.,   3348.,   5114.,   7154.,
      9194.,   11234.,  13274.,  15314.,  10804.,  12228.,  6422.,   7166.,
      7060.,   8484.,   17688.,  20664.,  32140.,  36796.,  41452.,  46108.,
      50764.,  55420.,  38776.,  42008.,  21940.,  23620.,  21930.,  24354.,
      50748.,  55788.,  86838.,  94686.,  102534., 110382., 118230., 126078.,
      87756.,  93180.,  48474.,  51282.,  46170.,  48594.,  101148., 106188.,
      165318., 173166., 181014., 188862., 196710., 204558., 141996., 147420.,
      76554.,  79362.,  70410.,  72834.,  151548., 156588., 243798., 251646.,
      259494., 267342., 275190., 283038., 196236., 201660., 104634., 107442.,
      63460.,  65268.,  135096., 138840., 215164., 220972., 226780., 232588.,
      238396., 244204., 168472., 172472., 89092.,  91156.,  40630.,  41630.,
      85860.,  87924.,  135818., 139010., 142202., 145394., 148586., 151778.,
      104340., 106532., 54854.,  55982.,  750.,    1942.,   3924.,   6372.,
      9650.,   13418.,  17186.,  20954.,  24722.,  28490.,  19588.,  22164.,
      11390.,  12710.,  13540.,  16116.,  32952.,  38232.,  58492.,  66604.,
      74716.,  82828.,  90940.,  99052.,  67864.,  73400.,  37636.,  40468.,
      40290.,  44442.,  90924.,  99420.,  152286., 165318., 178350., 191382.,
      204414., 217446., 148668., 157548., 80658.,  85194.,  81810.,  85962.,
      175884., 184380., 282606., 295638., 308670., 321702., 334734., 347766.,
      237468., 246348., 126018., 130554., 123330., 127482., 260844., 269340.,
      412926., 425958., 438990., 452022., 465054., 478086., 326268., 335148.,
      171378., 175914., 104500., 107460., 219480., 225528., 345196., 354460.,
      363724., 372988., 382252., 391516., 266680., 272984., 139348., 142564.,
      64030.,  65606.,  133812., 137028., 209474., 214394., 219314., 224234.,
      229154., 234074., 159204., 162548., 82862.,  84566.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1161.,   1242.,   1323.,   1404.,   1898.,   2012.,   2126.,   2240.,
      2830.,   2980.,   3130.,   3280.,   3265.,   3430.,   3595.,   3760.,
      3700.,   3880.,   4060.,   4240.,   3470.,   3620.,   3770.,   3920.,
      2997.,   3114.,   3231.,   3348.,   3118.,   3268.,   3418.,   3568.,
      4816.,   5024.,   5232.,   5440.,   6870.,   7140.,   7410.,   7680.,
      7650.,   7940.,   8230.,   8520.,   8430.,   8740.,   9050.,   9360.,
      7616.,   7872.,   8128.,   8384.,   6382.,   6580.,   6778.,   6976.,
      6560.,   6800.,   7040.,   7280.,   9810.,   10140.,  10470.,  10800.,
      13625.,  14050.,  14475.,  14900.,  14850.,  15300.,  15750.,  16200.,
      16075.,  16550.,  17025.,  17500.,  14190.,  14580.,  14970.,  15360.,
      11660.,  11960.,  12260.,  12560.,  11285.,  11630.,  11975.,  12320.,
      16390.,  16860.,  17330.,  17800.,  22200.,  22800.,  23400.,  24000.,
      23425.,  24050.,  24675.,  25300.,  24650.,  25300.,  25950.,  26600.,
      21330.,  21860.,  22390.,  22920.,  17225.,  17630.,  18035.,  18440.,
      16010.,  16460.,  16910.,  17360.,  22970.,  23580.,  24190.,  24800.,
      30775.,  31550.,  32325.,  33100.,  32000.,  32800.,  33600.,  34400.,
      33225.,  34050.,  34875.,  35700.,  28470.,  29140.,  29810.,  30480.,
      22790.,  23300.,  23810.,  24320.,  19978.,  20380.,  20782.,  21184.,
      28128.,  28672.,  29216.,  29760.,  37050.,  37740.,  38430.,  39120.,
      38230.,  38940.,  39650.,  40360.,  39410.,  40140.,  40870.,  41600.,
      33232.,  33824.,  34416.,  35008.,  26218.,  26668.,  27118.,  27568.,
      20781.,  21114.,  21447.,  21780.,  28970.,  29420.,  29870.,  30320.,
      37810.,  38380.,  38950.,  39520.,  38845.,  39430.,  40015.,  40600.,
      39880.,  40480.,  41080.,  41680.,  33326.,  33812.,  34298.,  34784.,
      26073.,  26442.,  26811.,  27180.,  12186.,  12708.,  13230.,  13752.,
      17774.,  18476.,  19178.,  19880.,  24145.,  25030.,  25915.,  26800.,
      24580.,  25480.,  26380.,  27280.,  25015.,  25930.,  26845.,  27760.,
      21698.,  22436.,  23174.,  23912.,  17550.,  18108.,  18666.,  19224.,
      23698.,  24436.,  25174.,  25912.,  33824.,  34816.,  35808.,  36800.,
      45090.,  46340.,  47590.,  48840.,  45870.,  47140.,  48410.,  49680.,
      46650.,  47940.,  49230.,  50520.,  39760.,  40800.,  41840.,  42880.,
      31666.,  32452.,  33238.,  34024.,  39635.,  40610.,  41585.,  42560.,
      55870.,  57180.,  58490.,  59800.,  73650.,  75300.,  76950.,  78600.,
      74875.,  76550.,  78225.,  79900.,  76100.,  77800.,  79500.,  81200.,
      64170.,  65540.,  66910.,  68280.,  50615.,  51650.,  52685.,  53720.,
      44360.,  45440.,  46520.,  47600.,  62450.,  63900.,  65350.,  66800.,
      82225.,  84050.,  85875.,  87700.,  83450.,  85300.,  87150.,  89000.,
      84675.,  86550.,  88425.,  90300.,  71310.,  72820.,  74330.,  75840.,
      56180.,  57320.,  58460.,  59600.,  49085.,  50270.,  51455.,  52640.,
      69030.,  70620.,  72210.,  73800.,  90800.,  92800.,  94800.,  96800.,
      92025.,  94050.,  96075.,  98100.,  93250.,  95300.,  97350.,  99400.,
      78450.,  80100.,  81750.,  83400.,  61745.,  62990.,  64235.,  65480.,
      52318.,  53308.,  54298.,  55288.,  72816.,  74144.,  75472.,  76800.,
      94870.,  96540.,  98210.,  99880.,  96050.,  97740.,  99430.,  101120.,
      97230.,  98940.,  100650., 102360., 81056.,  82432.,  83808.,  85184.,
      63262.,  64300.,  65338.,  66376.,  49446.,  50220.,  50994.,  51768.,
      68366.,  69404.,  70442.,  71480.,  88525.,  89830.,  91135.,  92440.,
      89560.,  90880.,  92200.,  93520.,  90595.,  91930.,  93265.,  94600.,
      75074.,  76148.,  77222.,  78296.,  58266.,  59076.,  59886.,  60696.,
      23211.,  24174.,  25137.,  26100.,  33650.,  34940.,  36230.,  37520.,
      45460.,  47080.,  48700.,  50320.,  45895.,  47530.,  49165.,  50800.,
      46330.,  47980.,  49630.,  51280.,  39926.,  41252.,  42578.,  43904.,
      32103.,  33102.,  34101.,  35100.,  44278.,  45604.,  46930.,  48256.,
      62832.,  64608.,  66384.,  68160.,  83310.,  85540.,  87770.,  90000.,
      84090.,  86340.,  88590.,  90840.,  84870.,  87140.,  89410.,  91680.,
      71904.,  73728.,  75552.,  77376.,  56950.,  58324.,  59698.,  61072.,
      72710.,  74420.,  76130.,  77840.,  101930., 104220., 106510., 108800.,
      133675., 136550., 139425., 142300., 134900., 137800., 140700., 143600.,
      136125., 139050., 141975., 144900., 114150., 116500., 118850., 121200.,
      89570.,  91340.,  93110.,  94880.,  77435.,  79250.,  81065.,  82880.,
      108510., 110940., 113370., 115800., 142250., 145300., 148350., 151400.,
      143475., 146550., 149625., 152700., 144700., 147800., 150900., 154000.,
      121290., 123780., 126270., 128760., 95135.,  97010.,  98885.,  100760.,
      82160.,  84080.,  86000.,  87920.,  115090., 117660., 120230., 122800.,
      150825., 154050., 157275., 160500., 152050., 155300., 158550., 161800.,
      153275., 156550., 159825., 163100., 128430., 131060., 133690., 136320.,
      100700., 102680., 104660., 106640., 84658.,  86236.,  87814.,  89392.,
      117504., 119616., 121728., 123840., 152690., 155340., 157990., 160640.,
      153870., 156540., 159210., 161880., 155050., 157740., 160430., 163120.,
      128880., 131040., 133200., 135360., 100306., 101932., 103558., 105184.,
      78111.,  79326.,  80541.,  81756.,  107762., 109388., 111014., 112640.,
      139240., 141280., 143320., 145360., 140275., 142330., 144385., 146440.,
      141310., 143380., 145450., 147520., 116822., 118484., 120146., 121808.,
      90459.,  91710.,  92961.,  94212.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,     2.,     3.,     4.,     7.,     10.,    13.,    16.,    22.,
      28.,    34.,    40.,    46.,    52.,    58.,    64.,    70.,    76.,
      82.,    88.,    73.,    78.,    83.,    88.,    51.,    54.,    57.,
      60.,    25.,    30.,    35.,    40.,    92.,    104.,   116.,   128.,
      209.,   230.,   251.,   272.,   293.,   314.,   335.,   356.,   377.,
      398.,   419.,   440.,   336.,   352.,   368.,   384.,   213.,   222.,
      231.,   240.,   132.,   144.,   156.,   168.,   375.,   402.,   429.,
      456.,   741.,   786.,   831.,   876.,   921.,   966.,   1011.,  1056.,
      1101.,  1146.,  1191.,  1236.,  909.,   942.,   975.,   1008.,  546.,
      564.,   582.,   600.,   372.,   384.,   396.,   408.,   915.,   942.,
      969.,   996.,   1641.,  1686.,  1731.,  1776.,  1821.,  1866.,  1911.,
      1956.,  2001.,  2046.,  2091.,  2136.,  1569.,  1602.,  1635.,  1668.,
      906.,   924.,   942.,   960.,   612.,   624.,   636.,   648.,   1455.,
      1482.,  1509.,  1536.,  2541.,  2586.,  2631.,  2676.,  2721.,  2766.,
      2811.,  2856.,  2901.,  2946.,  2991.,  3036.,  2229.,  2262.,  2295.,
      2328.,  1266.,  1284.,  1302.,  1320.,  751.,   762.,   773.,   784.,
      1688.,  1712.,  1736.,  1760.,  2819.,  2858.,  2897.,  2936.,  2975.,
      3014.,  3053.,  3092.,  3131.,  3170.,  3209.,  3248.,  2316.,  2344.,
      2372.,  2400.,  1275.,  1290.,  1305.,  1320.,  567.,   574.,   581.,
      588.,   1243.,  1258.,  1273.,  1288.,  2032.,  2056.,  2080.,  2104.,
      2128.,  2152.,  2176.,  2200.,  2224.,  2248.,  2272.,  2296.,  1613.,
      1630.,  1647.,  1664.,  873.,   882.,   891.,   900.,   10.,    20.,
      30.,    40.,    61.,    82.,    103.,   124.,   157.,   190.,   223.,
      256.,   289.,   322.,   355.,   388.,   421.,   454.,   487.,   520.,
      343.,   366.,   389.,   412.,   204.,   216.,   228.,   240.,   223.,
      246.,   269.,   292.,   560.,   608.,   656.,   704.,   1019.,  1094.,
      1169.,  1244.,  1319.,  1394.,  1469.,  1544.,  1619.,  1694.,  1769.,
      1844.,  1236.,  1288.,  1340.,  1392.,  699.,   726.,   753.,   780.,
      699.,   738.,   777.,   816.,   1617.,  1698.,  1779.,  1860.,  2766.,
      2892.,  3018.,  3144.,  3270.,  3396.,  3522.,  3648.,  3774.,  3900.,
      4026.,  4152.,  2799.,  2886.,  2973.,  3060.,  1545.,  1590.,  1635.,
      1680.,  1479.,  1518.,  1557.,  1596.,  3237.,  3318.,  3399.,  3480.,
      5286.,  5412.,  5538.,  5664.,  5790.,  5916.,  6042.,  6168.,  6294.,
      6420.,  6546.,  6672.,  4539.,  4626.,  4713.,  4800.,  2445.,  2490.,
      2535.,  2580.,  2259.,  2298.,  2337.,  2376.,  4857.,  4938.,  5019.,
      5100.,  7806.,  7932.,  8058.,  8184.,  8310.,  8436.,  8562.,  8688.,
      8814.,  8940.,  9066.,  9192.,  6279.,  6366.,  6453.,  6540.,  3345.,
      3390.,  3435.,  3480.,  2029.,  2058.,  2087.,  2116.,  4316.,  4376.,
      4436.,  4496.,  6869.,  6962.,  7055.,  7148.,  7241.,  7334.,  7427.,
      7520.,  7613.,  7706.,  7799.,  7892.,  5376.,  5440.,  5504.,  5568.,
      2841.,  2874.,  2907.,  2940.,  1296.,  1312.,  1328.,  1344.,  2737.,
      2770.,  2803.,  2836.,  4327.,  4378.,  4429.,  4480.,  4531.,  4582.,
      4633.,  4684.,  4735.,  4786.,  4837.,  4888.,  3323.,  3358.,  3393.,
      3428.,  1746.,  1764.,  1782.,  1800.,  19.,    38.,    57.,    76.,
      115.,   154.,   193.,   232.,   292.,   352.,   412.,   472.,   532.,
      592.,   652.,   712.,   772.,   832.,   892.,   952.,   613.,   654.,
      695.,   736.,   357.,   378.,   399.,   420.,   421.,   462.,   503.,
      544.,   1028.,  1112.,  1196.,  1280.,  1829.,  1958.,  2087.,  2216.,
      2345.,  2474.,  2603.,  2732.,  2861.,  2990.,  3119.,  3248.,  2136.,
      2224.,  2312.,  2400.,  1185.,  1230.,  1275.,  1320.,  1266.,  1332.,
      1398.,  1464.,  2859.,  2994.,  3129.,  3264.,  4791.,  4998.,  5205.,
      5412.,  5619.,  5826.,  6033.,  6240.,  6447.,  6654.,  6861.,  7068.,
      4689.,  4830.,  4971.,  5112.,  2544.,  2616.,  2688.,  2760.,  2586.,
      2652.,  2718.,  2784.,  5559.,  5694.,  5829.,  5964.,  8931.,  9138.,
      9345.,  9552.,  9759.,  9966.,  10173., 10380., 10587., 10794., 11001.,
      11208., 7509.,  7650.,  7791.,  7932.,  3984.,  4056.,  4128.,  4200.,
      3906.,  3972.,  4038.,  4104.,  8259.,  8394.,  8529.,  8664.,  13071.,
      13278., 13485., 13692., 13899., 14106., 14313., 14520., 14727., 14934.,
      15141., 15348., 10329., 10470., 10611., 10752., 5424.,  5496.,  5568.,
      5640.,  3307.,  3354.,  3401.,  3448.,  6944.,  7040.,  7136.,  7232.,
      10919., 11066., 11213., 11360., 11507., 11654., 11801., 11948., 12095.,
      12242., 12389., 12536., 8436.,  8536.,  8636.,  8736.,  4407.,  4458.,
      4509.,  4560.,  2025.,  2050.,  2075.,  2100.,  4231.,  4282.,  4333.,
      4384.,  6622.,  6700.,  6778.,  6856.,  6934.,  7012.,  7090.,  7168.,
      7246.,  7324.,  7402.,  7480.,  5033.,  5086.,  5139.,  5192.,  2619.,
      2646.,  2673.,  2700.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8685.,    9315.,    9945.,    10575.,   14320.,   15208.,   16096.,
      16984.,   21485.,   22655.,   23825.,   24995.,   24935.,   26225.,
      27515.,   28805.,   28385.,   29795.,   31205.,   32615.,   26728.,
      27904.,   29080.,   30256.,   23157.,   24075.,   24993.,   25911.,
      23816.,   24992.,   26168.,   27344.,   36944.,   38576.,   40208.,
      41840.,   52880.,   55000.,   57120.,   59240.,   59080.,   61360.,
      63640.,   65920.,   65280.,   67720.,   70160.,   72600.,   59120.,
      61136.,   63152.,   65168.,   49640.,   51200.,   52760.,   54320.,
      50665.,   52555.,   54445.,   56335.,   75960.,   78560.,   81160.,
      83760.,   105725.,  109075.,  112425.,  115775.,  115475.,  119025.,
      122575.,  126125.,  125225.,  128975.,  132725.,  136475.,  110720.,
      113800.,  116880.,  119960.,  91105.,   93475.,   95845.,   98215.,
      88255.,   90985.,   93715.,   96445.,   128320.,  132040.,  135760.,
      139480.,  173975.,  178725.,  183475.,  188225.,  183725.,  188675.,
      193625.,  198575.,  193475.,  198625.,  203775.,  208925.,  167560.,
      171760.,  175960.,  180160.,  135415.,  138625.,  141835.,  145045.,
      125845.,  129415.,  132985.,  136555.,  180680.,  185520.,  190360.,
      195200.,  242225.,  248375.,  254525.,  260675.,  251975.,  258325.,
      264675.,  271025.,  261725.,  268275.,  274825.,  281375.,  224400.,
      229720.,  235040.,  240360.,  179725.,  183775.,  187825.,  191875.,
      157712.,  160904.,  164096.,  167288.,  222128.,  226448.,  230768.,
      235088.,  292680.,  298160.,  303640.,  309120.,  302080.,  307720.,
      313360.,  319000.,  311480.,  317280.,  323080.,  328880.,  262736.,
      267440.,  272144.,  276848.,  207344.,  210920.,  214496.,  218072.,
      164421.,  167067.,  169713.,  172359.,  229264.,  232840.,  236416.,
      239992.,  299285.,  303815.,  308345.,  312875.,  307535.,  312185.,
      316835.,  321485.,  315785.,  320555.,  325325.,  330095.,  263944.,
      267808.,  271672.,  275536.,  206541.,  209475.,  212409.,  215343.,
      96003.,   100161.,  104319.,  108477.,  140152.,  145744.,  151336.,
      156928.,  190535.,  197585.,  204635.,  211685.,  193985.,  201155.,
      208325.,  215495.,  197435.,  204725.,  212015.,  219305.,  171376.,
      177256.,  183136.,  189016.,  138699.,  143145.,  147591.,  152037.,
      187280.,  193160.,  199040.,  204920.,  267440.,  275344.,  283248.,
      291152.,  356680.,  366640.,  376600.,  386560.,  362880.,  373000.,
      383120.,  393240.,  369080.,  379360.,  389640.,  399920.,  314704.,
      322992.,  331280.,  339568.,  250736.,  257000.,  263264.,  269528.,
      313795.,  321565.,  329335.,  337105.,  442480.,  452920.,  463360.,
      473800.,  583475.,  596625.,  609775.,  622925.,  593225.,  606575.,
      619925.,  633275.,  602975.,  616525.,  630075.,  643625.,  508600.,
      519520.,  530440.,  541360.,  401275.,  409525.,  417775.,  426025.,
      351385.,  359995.,  368605.,  377215.,  494840.,  506400.,  517960.,
      529520.,  651725.,  666275.,  680825.,  695375.,  661475.,  676225.,
      690975.,  705725.,  671225.,  686175.,  701125.,  716075.,  565440.,
      577480.,  589520.,  601560.,  445585.,  454675.,  463765.,  472855.,
      388975.,  398425.,  407875.,  417325.,  547200.,  559880.,  572560.,
      585240.,  719975.,  735925.,  751875.,  767825.,  729725.,  745875.,
      762025.,  778175.,  739475.,  755825.,  772175.,  788525.,  622280.,
      635440.,  648600.,  661760.,  489895.,  499825.,  509755.,  519685.,
      415256.,  423152.,  431048.,  438944.,  578064.,  588656.,  599248.,
      609840.,  753280.,  766600.,  779920.,  793240.,  762680.,  776160.,
      789640.,  803120.,  772080.,  785720.,  799360.,  813000.,  643760.,
      654736.,  665712.,  676688.,  502520.,  510800.,  519080.,  527360.,
      392859.,  399033.,  405207.,  411381.,  543256.,  551536.,  559816.,
      568096.,  703535.,  713945.,  724355.,  734765.,  711785.,  722315.,
      732845.,  743375.,  720035.,  730685.,  741335.,  751985.,  596752.,
      605320.,  613888.,  622456.,  463203.,  469665.,  476127.,  482589.,
      183321.,  191007.,  198693.,  206379.,  265984.,  276280.,  286576.,
      296872.,  359585.,  372515.,  385445.,  398375.,  363035.,  376085.,
      389135.,  402185.,  366485.,  379655.,  392825.,  405995.,  316024.,
      326608.,  337192.,  347776.,  254241.,  262215.,  270189.,  278163.,
      350744.,  361328.,  371912.,  382496.,  497936.,  512112.,  526288.,
      540464.,  660480.,  678280.,  696080.,  713880.,  666680.,  684640.,
      702600.,  720560.,  672880.,  691000.,  709120.,  727240.,  570288.,
      584848.,  599408.,  613968.,  451832.,  462800.,  473768.,  484736.,
      576925.,  590575.,  604225.,  617875.,  809000.,  827280.,  845560.,
      863840.,  1061225., 1084175., 1107125., 1130075., 1070975., 1094125.,
      1117275., 1140425., 1080725., 1104075., 1127425., 1150775., 906480.,
      925240.,  944000.,  962760.,  711445.,  725575.,  739705.,  753835.,
      614515.,  629005.,  643495.,  657985.,  861360.,  880760.,  900160.,
      919560.,  1129475., 1153825., 1178175., 1202525., 1139225., 1163775.,
      1188325., 1212875., 1148975., 1173725., 1198475., 1223225., 963320.,
      983200.,  1003080., 1022960., 755755.,  770725.,  785695.,  800665.,
      652105.,  667435.,  682765.,  698095.,  913720.,  934240.,  954760.,
      975280.,  1197725., 1223475., 1249225., 1274975., 1207475., 1233425.,
      1259375., 1285325., 1217225., 1243375., 1269525., 1295675., 1020160.,
      1041160., 1062160., 1083160., 800065.,  815875.,  831685.,  847495.,
      672800.,  685400.,  698000.,  710600.,  934000.,  950864.,  967728.,
      984592.,  1213880., 1235040., 1256200., 1277360., 1223280., 1244600.,
      1265920., 1287240., 1232680., 1254160., 1275640., 1297120., 1024784.,
      1042032., 1059280., 1076528., 797696.,  810680.,  823664.,  836648.,
      621297.,  630999.,  640701.,  650403.,  857248.,  870232.,  883216.,
      896200.,  1107785., 1124075., 1140365., 1156655., 1116035., 1132445.,
      1148855., 1165265., 1124285., 1140815., 1157345., 1173875., 929560.,
      942832.,  956104.,  969376.,  719865.,  729855.,  739845.,  749835.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,      11.,     17.,     23.,     40.,     60.,     80.,     100.,
      137.,    179.,    221.,    263.,    305.,    347.,    389.,    431.,
      473.,    515.,    557.,    599.,    516.,    552.,    588.,    624.,
      369.,    391.,    413.,    435.,    148.,    184.,    220.,    256.,
      612.,    700.,    788.,    876.,    1456.,   1612.,   1768.,   1924.,
      2080.,   2236.,   2392.,   2548.,   2704.,   2860.,   3016.,   3172.,
      2460.,   2580.,   2700.,   2820.,   1580.,   1648.,   1716.,   1784.,
      909.,    999.,    1089.,   1179.,   2676.,   2880.,   3084.,   3288.,
      5397.,   5739.,   6081.,   6423.,   6765.,   7107.,   7449.,   7791.,
      8133.,   8475.,   8817.,   9159.,   6792.,   7044.,   7296.,   7548.,
      4113.,   4251.,   4389.,   4527.,   2709.,   2799.,   2889.,   2979.,
      6756.,   6960.,   7164.,   7368.,   12237.,  12579.,  12921.,  13263.,
      13605.,  13947.,  14289.,  14631.,  14973.,  15315.,  15657.,  15999.,
      11832.,  12084.,  12336.,  12588.,  6873.,   7011.,   7149.,   7287.,
      4509.,   4599.,   4689.,   4779.,   10836.,  11040.,  11244.,  11448.,
      19077.,  19419.,  19761.,  20103.,  20445.,  20787.,  21129.,  21471.,
      21813.,  22155.,  22497.,  22839.,  16872.,  17124.,  17376.,  17628.,
      9633.,   9771.,   9909.,   10047.,  5704.,   5788.,   5872.,   5956.,
      12876.,  13060.,  13244.,  13428.,  21580.,  21880.,  22180.,  22480.,
      22780.,  23080.,  23380.,  23680.,  23980.,  24280.,  24580.,  24880.,
      17796.,  18012.,  18228.,  18444.,  9824.,   9940.,   10056.,  10172.,
      4361.,   4415.,   4469.,   4523.,   9584.,   9700.,   9816.,   9932.,
      15701.,  15887.,  16073.,  16259.,  16445.,  16631.,  16817.,  17003.,
      17189.,  17375.,  17561.,  17747.,  12492.,  12624.,  12756.,  12888.,
      6773.,   6843.,   6913.,   6983.,   59.,     137.,    215.,    293.,
      436.,    600.,    764.,    928.,    1163.,   1421.,   1679.,   1937.,
      2195.,   2453.,   2711.,   2969.,   3227.,   3485.,   3743.,   4001.,
      2640.,   2820.,   3000.,   3180.,   1575.,   1669.,   1763.,   1857.,
      1696.,   1876.,   2056.,   2236.,   4284.,   4660.,   5036.,   5412.,
      7828.,   8416.,   9004.,   9592.,   10180.,  10768.,  11356.,  11944.,
      12532.,  13120.,  13708.,  14296.,  9588.,   9996.,   10404.,  10812.,
      5432.,   5644.,   5856.,   6068.,   5391.,   5697.,   6003.,   6309.,
      12504.,  13140.,  13776.,  14412.,  21435.,  22425.,  23415.,  24405.,
      25395.,  26385.,  27375.,  28365.,  29355.,  30345.,  31335.,  32325.,
      21804.,  22488.,  23172.,  23856.,  12051.,  12405.,  12759.,  13113.,
      11511.,  11817.,  12123.,  12429.,  25224.,  25860.,  26496.,  27132.,
      41235.,  42225.,  43215.,  44205.,  45195.,  46185.,  47175.,  48165.,
      49155.,  50145.,  51135.,  52125.,  35484.,  36168.,  36852.,  37536.,
      19131.,  19485.,  19839.,  20193.,  17631.,  17937.,  18243.,  18549.,
      37944.,  38580.,  39216.,  39852.,  61035.,  62025.,  63015.,  64005.,
      64995.,  65985.,  66975.,  67965.,  68955.,  69945.,  70935.,  71925.,
      49164.,  49848.,  50532.,  51216.,  26211.,  26565.,  26919.,  27273.,
      15892.,  16120.,  16348.,  16576.,  33828.,  34300.,  34772.,  35244.,
      53872.,  54604.,  55336.,  56068.,  56800.,  57532.,  58264.,  58996.,
      59728.,  60460.,  61192.,  61924.,  42204.,  42708.,  43212.,  43716.,
      22316.,  22576.,  22836.,  23096.,  10175.,  10301.,  10427.,  10553.,
      21500.,  21760.,  22020.,  22280.,  34007.,  34409.,  34811.,  35213.,
      35615.,  36017.,  36419.,  36821.,  37223.,  37625.,  38027.,  38429.,
      26136.,  26412.,  26688.,  26964.,  13739.,  13881.,  14023.,  14165.,
      113.,    263.,    413.,    563.,    832.,    1140.,   1448.,   1756.,
      2189.,   2663.,   3137.,   3611.,   4085.,   4559.,   5033.,   5507.,
      5981.,   6455.,   6929.,   7403.,   4764.,   5088.,   5412.,   5736.,
      2781.,   2947.,   3113.,   3279.,   3244.,   3568.,   3892.,   4216.,
      7956.,   8620.,   9284.,   9948.,   14200.,  15220.,  16240.,  17260.,
      18280.,  19300.,  20320.,  21340.,  22360.,  23380.,  24400.,  25420.,
      16716.,  17412.,  18108.,  18804.,  9284.,   9640.,   9996.,   10352.,
      9873.,   10395.,  10917.,  11439.,  22332.,  23400.,  24468.,  25536.,
      37473.,  39111.,  40749.,  42387.,  44025.,  45663.,  47301.,  48939.,
      50577.,  52215.,  53853.,  55491.,  36816.,  37932.,  39048.,  40164.,
      19989.,  20559.,  21129.,  21699.,  20313.,  20835.,  21357.,  21879.,
      43692.,  44760.,  45828.,  46896.,  70233.,  71871.,  73509.,  75147.,
      76785.,  78423.,  80061.,  81699.,  83337.,  84975.,  86613.,  88251.,
      59136.,  60252.,  61368.,  62484.,  31389.,  31959.,  32529.,  33099.,
      30753.,  31275.,  31797.,  32319.,  65052.,  66120.,  67188.,  68256.,
      102993., 104631., 106269., 107907., 109545., 111183., 112821., 114459.,
      116097., 117735., 119373., 121011., 81456.,  82572.,  83688.,  84804.,
      42789.,  43359.,  43929.,  44499.,  26080.,  26452.,  26824.,  27196.,
      54780.,  55540.,  56300.,  57060.,  86164.,  87328.,  88492.,  89656.,
      90820.,  91984.,  93148.,  94312.,  95476.,  96640.,  97804.,  98968.,
      66612.,  67404.,  68196.,  68988.,  34808.,  35212.,  35616.,  36020.,
      15989.,  16187.,  16385.,  16583.,  33416.,  33820.,  34224.,  34628.,
      52313.,  52931.,  53549.,  54167.,  54785.,  55403.,  56021.,  56639.,
      57257.,  57875.,  58493.,  59111.,  39780.,  40200.,  40620.,  41040.,
      20705.,  20919.,  21133.,  21347.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67086.,    72054.,    77022.,    81990.,    111128.,   118136.,
      125144.,   132152.,   167290.,   176530.,   185770.,   195010.,
      194770.,   204970.,   215170.,   225370.,   222250.,   233410.,
      244570.,   255730.,   209720.,   219032.,   228344.,   237656.,
      181998.,   189270.,   196542.,   203814.,   186040.,   195352.,
      204664.,   213976.,   289248.,   302176.,   315104.,   328032.,
      414760.,   431560.,   448360.,   465160.,   464200.,   482280.,
      500360.,   518440.,   513640.,   533000.,   552360.,   571720.,
      465760.,   481760.,   497760.,   513760.,   391480.,   403864.,
      416248.,   428632.,   398090.,   413090.,   428090.,   443090.,
      597640.,   618280.,   638920.,   659560.,   832750.,   859350.,
      885950.,   912550.,   910550.,   938750.,   966950.,   995150.,
      988350.,   1018150.,  1047950.,  1077750.,  874600.,   899080.,
      923560.,   948040.,   720170.,   739010.,   757850.,   776690.,
      697970.,   719690.,   741410.,   763130.,   1015400.,  1045000.,
      1074600.,  1104200.,  1377350.,  1415150.,  1452950.,  1490750.,
      1455150.,  1494550.,  1533950.,  1573350.,  1532950.,  1573950.,
      1614950.,  1655950.,  1328200.,  1361640.,  1395080.,  1428520.,
      1073810.,  1099370.,  1124930.,  1150490.,  997850.,   1026290.,
      1054730.,  1083170.,  1433160.,  1471720.,  1510280.,  1548840.,
      1921950.,  1970950.,  2019950.,  2068950.,  1999750.,  2050350.,
      2100950.,  2151550.,  2077550.,  2129750.,  2181950.,  2234150.,
      1781800.,  1824200.,  1866600.,  1909000.,  1427450.,  1459730.,
      1492010.,  1524290.,  1253272.,  1278712.,  1304152.,  1329592.,
      1765472.,  1799904.,  1834336.,  1868768.,  2326600.,  2370280.,
      2413960.,  2457640.,  2401640.,  2446600.,  2491560.,  2536520.,
      2476680.,  2522920.,  2569160.,  2615400.,  2089440.,  2126944.,
      2164448.,  2201952.,  1649176.,  1677688.,  1706200.,  1734712.,
      1308078.,  1329174.,  1350270.,  1371366.,  1824152.,  1852664.,
      1881176.,  1909688.,  2381530.,  2417650.,  2453770.,  2489890.,
      2447410.,  2484490.,  2521570.,  2558650.,  2513290.,  2551330.,
      2589370.,  2627410.,  2100920.,  2131736.,  2162552.,  2193368.,
      1644174.,  1667574.,  1690974.,  1714374.,  762102.,   795294.,
      828486.,   861678.,   1113080.,  1157720.,  1202360.,  1247000.,
      1513810.,  1570090.,  1626370.,  1682650.,  1541290.,  1598530.,
      1655770.,  1713010.,  1568770.,  1626970.,  1685170.,  1743370.,
      1362200.,  1409144.,  1456088.,  1503032.,  1102806.,  1138302.,
      1173798.,  1209294.,  1489048.,  1535992.,  1582936.,  1629880.,
      2126944.,  2190048.,  2253152.,  2316256.,  2837320.,  2916840.,
      2996360.,  3075880.,  2886760.,  2967560.,  3048360.,  3129160.,
      2936200.,  3018280.,  3100360.,  3182440.,  2504160.,  2570336.,
      2636512.,  2702688.,  1995544.,  2045560.,  2095576.,  2145592.,
      2497250.,  2559290.,  2621330.,  2683370.,  3521960.,  3605320.,
      3688680.,  3772040.,  4644950.,  4749950.,  4854950.,  4959950.,
      4722750.,  4829350.,  4935950.,  5042550.,  4800550.,  4908750.,
      5016950.,  5125150.,  4049800.,  4137000.,  4224200.,  4311400.,
      3195650.,  3261530.,  3327410.,  3393290.,  2797130.,  2865890.,
      2934650.,  3003410.,  3939720.,  4032040.,  4124360.,  4216680.,
      5189550.,  5305750.,  5421950.,  5538150.,  5267350.,  5385150.,
      5502950.,  5620750.,  5345150.,  5464550.,  5583950.,  5703350.,
      4503400.,  4599560.,  4695720.,  4791880.,  3549290.,  3621890.,
      3694490.,  3767090.,  3097010.,  3172490.,  3247970.,  3323450.,
      4357480.,  4458760.,  4560040.,  4661320.,  5734150.,  5861550.,
      5988950.,  6116350.,  5811950.,  5940950.,  6069950.,  6198950.,
      5889750.,  6020350.,  6150950.,  6281550.,  4957000.,  5062120.,
      5167240.,  5272360.,  3902930.,  3982250.,  4061570.,  4140890.,
      3308920.,  3371992.,  3435064.,  3498136.,  4606688.,  4691296.,
      4775904.,  4860512.,  6003560.,  6109960.,  6216360.,  6322760.,
      6078600.,  6186280.,  6293960.,  6401640.,  6153640.,  6262600.,
      6371560.,  6480520.,  5131360.,  5219040.,  5306720.,  5394400.,
      4005880.,  4072024.,  4138168.,  4204312.,  3132054.,  3181374.,
      3230694.,  3280014.,  4331384.,  4397528.,  4463672.,  4529816.,
      5609650.,  5692810.,  5775970.,  5859130.,  5675530.,  5759650.,
      5843770.,  5927890.,  5741410.,  5826490.,  5911570.,  5996650.,
      4758680.,  4827128.,  4895576.,  4964024.,  3693942.,  3745566.,
      3797190.,  3848814.,  1457118.,  1518534.,  1579950.,  1641366.,
      2115032.,  2197304.,  2279576.,  2361848.,  2860330.,  2963650.,
      3066970.,  3170290.,  2887810.,  2992090.,  3096370.,  3200650.,
      2915290.,  3020530.,  3125770.,  3231010.,  2514680.,  2599256.,
      2683832.,  2768408.,  2023614.,  2087334.,  2151054.,  2214774.,
      2792056.,  2876632.,  2961208.,  3045784.,  3964640.,  4077920.,
      4191200.,  4304480.,  5259880.,  5402120.,  5544360.,  5686600.,
      5309320.,  5452840.,  5596360.,  5739880.,  5358760.,  5503560.,
      5648360.,  5793160.,  4542560.,  4658912.,  4775264.,  4891616.,
      3599608.,  3687256.,  3774904.,  3862552.,  4596410.,  4705490.,
      4814570.,  4923650.,  6446280.,  6592360.,  6738440.,  6884520.,
      8457150.,  8640550.,  8823950.,  9007350.,  8534950.,  8719950.,
      8904950.,  9089950.,  8612750.,  8799350.,  8985950.,  9172550.,
      7225000.,  7374920.,  7524840.,  7674760.,  5671130.,  5784050.,
      5896970.,  6009890.,  4896290.,  5012090.,  5127890.,  5243690.,
      6864040.,  7019080.,  7174120.,  7329160.,  9001750.,  9196350.,
      9390950.,  9585550.,  9079550.,  9275750.,  9471950.,  9668150.,
      9157350.,  9355150.,  9552950.,  9750750.,  7678600.,  7837480.,
      7996360.,  8155240.,  6024770.,  6144410.,  6264050.,  6383690.,
      5196170.,  5318690.,  5441210.,  5563730.,  7281800.,  7445800.,
      7609800.,  7773800.,  9546350.,  9752150.,  9957950.,  10163750.,
      9624150.,  9831550.,  10038950., 10246350., 9701950.,  9910950.,
      10119950., 10328950., 8132200.,  8300040.,  8467880.,  8635720.,
      6378410.,  6504770.,  6631130.,  6757490.,  5364568.,  5465272.,
      5565976.,  5666680.,  7447904.,  7582688.,  7717472.,  7852256.,
      9680520.,  9849640.,  10018760., 10187880., 9755560.,  9925960.,
      10096360., 10266760., 9830600.,  10002280., 10173960., 10345640.,
      8173280.,  8311136.,  8448992.,  8586848.,  6362584.,  6466360.,
      6570136.,  6673912.,  4956030.,  5033574.,  5111118.,  5188662.,
      6838616.,  6942392.,  7046168.,  7149944.,  8837770.,  8967970.,
      9098170.,  9228370.,  8903650.,  9034810.,  9165970.,  9297130.,
      8969530.,  9101650.,  9233770.,  9365890.,  7416440.,  7522520.,
      7628600.,  7734680.,  5743710.,  5823558.,  5903406.,  5983254.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      946.,    1258.,   1570.,   1882.,   2194.,   2506.,   2818.,   3130.,
      3442.,   3754.,   4066.,   4378.,   3860.,   4132.,   4404.,   4676.,
      2798.,   2966.,   3134.,   3302.,   980.,    1252.,   1524.,   1796.,
      4408.,   5080.,   5752.,   6424.,   10796.,  11996.,  13196.,  14396.,
      15596.,  16796.,  17996.,  19196.,  20396.,  21596.,  22796.,  23996.,
      18776.,  19704.,  20632.,  21560.,  12148.,  12676.,  13204.,  13732.,
      6690.,   7386.,   8082.,   8778.,   20124.,  21708.,  23292.,  24876.,
      41070.,  43734.,  46398.,  49062.,  51726.,  54390.,  57054.,  59718.,
      62382.,  65046.,  67710.,  70374.,  52428.,  54396.,  56364.,  58332.,
      31890.,  32970.,  34050.,  35130.,  20610.,  21306.,  22002.,  22698.,
      51804.,  53388.,  54972.,  56556.,  94350.,  97014.,  99678.,  102342.,
      105006., 107670., 110334., 112998., 115662., 118326., 120990., 123654.,
      91788.,  93756.,  95724.,  97692.,  53490.,  54570.,  55650.,  56730.,
      34530.,  35226.,  35922.,  36618.,  83484.,  85068.,  86652.,  88236.,
      147630., 150294., 152958., 155622., 158286., 160950., 163614., 166278.,
      168942., 171606., 174270., 176934., 131148., 133116., 135084., 137052.,
      75090.,  76170.,  77250.,  78330.,  44420.,  45076.,  45732.,  46388.,
      100504., 101944., 103384., 104824., 168764., 171116., 173468., 175820.,
      178172., 180524., 182876., 185228., 187580., 189932., 192284., 194636.,
      139448., 141144., 142840., 144536., 77092.,  78004.,  78916.,  79828.,
      34190.,  34614.,  35038.,  35462.,  75236.,  76148.,  77060.,  77972.,
      123394., 124858., 126322., 127786., 129250., 130714., 132178., 133642.,
      135106., 136570., 138034., 139498., 98292.,  99332.,  100372., 101412.,
      53342.,  53894.,  54446.,  54998.,  390.,    1006.,   1622.,   2238.,
      3284.,   4580.,   5876.,   7172.,   8938.,   10978.,  13018.,  15058.,
      17098.,  19138.,  21178.,  23218.,  25258.,  27298.,  29338.,  31378.,
      20708.,  22132.,  23556.,  24980.,  12374.,  13118.,  13862.,  14606.,
      13220.,  14644.,  16068.,  17492.,  33496.,  36472.,  39448.,  42424.,
      61340.,  65996.,  70652.,  75308.,  79964.,  84620.,  89276.,  93932.,
      98588.,  103244., 107900., 112556., 75512.,  78744.,  81976.,  85208.,
      42820.,  44500.,  46180.,  47860.,  42330.,  44754.,  47178.,  49602.,
      98316.,  103356., 108396., 113436., 168726., 176574., 184422., 192270.,
      200118., 207966., 215814., 223662., 231510., 239358., 247206., 255054.,
      172092., 177516., 182940., 188364., 95178.,  97986.,  100794., 103602.,
      90810.,  93234.,  95658.,  98082.,  199116., 204156., 209196., 214236.,
      325686., 333534., 341382., 349230., 357078., 364926., 372774., 380622.,
      388470., 396318., 404166., 412014., 280572., 285996., 291420., 296844.,
      151338., 154146., 156954., 159762., 139290., 141714., 144138., 146562.,
      299916., 304956., 309996., 315036., 482646., 490494., 498342., 506190.,
      514038., 521886., 529734., 537582., 545430., 553278., 561126., 568974.,
      389052., 394476., 399900., 405324., 207498., 210306., 213114., 215922.,
      125780., 127588., 129396., 131204., 267832., 271576., 275320., 279064.,
      426668., 432476., 438284., 444092., 449900., 455708., 461516., 467324.,
      473132., 478940., 484748., 490556., 334424., 338424., 342424., 346424.,
      176884., 178948., 181012., 183076., 80630.,  81630.,  82630.,  83630.,
      170420., 172484., 174548., 176612., 269626., 272818., 276010., 279202.,
      282394., 285586., 288778., 291970., 295162., 298354., 301546., 304738.,
      207300., 209492., 211684., 213876., 108998., 110126., 111254., 112382.,
      750.,    1942.,   3134.,   4326.,   6308.,   8756.,   11204.,  13652.,
      16930.,  20698.,  24466.,  28234.,  32002.,  35770.,  39538.,  43306.,
      47074.,  50842.,  54610.,  58378.,  37556.,  40132.,  42708.,  45284.,
      21950.,  23270.,  24590.,  25910.,  25460.,  28036.,  30612.,  33188.,
      62584.,  67864.,  73144.,  78424.,  111884., 119996., 128108., 136220.,
      144332., 152444., 160556., 168668., 176780., 184892., 193004., 201116.,
      132248., 137784., 143320., 148856., 73492.,  76324.,  79156.,  81988.,
      77970.,  82122.,  86274.,  90426.,  176508., 185004., 193500., 201996.,
      296382., 309414., 322446., 335478., 348510., 361542., 374574., 387606.,
      400638., 413670., 426702., 439734., 291756., 300636., 309516., 318396.,
      158466., 163002., 167538., 172074., 161010., 165162., 169314., 173466.,
      346428., 354924., 363420., 371916., 557022., 570054., 583086., 596118.,
      609150., 622182., 635214., 648246., 661278., 674310., 687342., 700374.,
      469356., 478236., 487116., 495996., 249186., 253722., 258258., 262794.,
      244050., 248202., 252354., 256506., 516348., 524844., 533340., 541836.,
      817662., 830694., 843726., 856758., 869790., 882822., 895854., 908886.,
      921918., 934950., 947982., 961014., 646956., 655836., 664716., 673596.,
      339906., 344442., 348978., 353514., 207140., 210100., 213060., 216020.,
      435160., 441208., 447256., 453304., 684572., 693836., 703100., 712364.,
      721628., 730892., 740156., 749420., 758684., 767948., 777212., 786476.,
      529400., 535704., 542008., 548312., 276676., 279892., 283108., 286324.,
      127070., 128646., 130222., 131798., 265604., 268820., 272036., 275252.,
      415858., 420778., 425698., 430618., 435538., 440458., 445378., 450298.,
      455218., 460138., 465058., 469978., 316308., 319652., 322996., 326340.,
      164654., 166358., 168062., 169766.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      384.,   610.,   890.,   1010.,  1130.,  1250.,  1144.,  969.,   988.,
      1500.,  2110.,  2320.,  2530.,  2740.,  2436.,  2014.,  2030.,  3000.,
      4125.,  4450.,  4775.,  5100.,  4450.,  3620.,  3470.,  5000.,  6725.,
      7050.,  7375.,  7700.,  6610.,  5300.,  4910.,  7000.,  9325.,  9650.,
      9975.,  10300., 8770.,  6980.,  6004.,  8420.,  11050., 11360., 11670.,
      11980., 10060., 7906.,  6180.,  8590.,  11180., 11450., 11720., 11990.,
      9988.,  7791.,  3912.,  5650.,  7610.,  7730.,  7850.,  7970.,  6856.,
      5505.,  7372.,  10460., 13870., 14080., 14290., 14500., 12292., 9742.,
      12110., 17000., 22325., 22650., 22975., 23300., 19570., 15380., 13550.,
      19000., 24925., 25250., 25575., 25900., 21730., 17060., 14990., 21000.,
      27525., 27850., 28175., 28500., 23890., 18740., 15748., 21860., 28410.,
      28720., 29030., 29340., 24396., 18994., 14748., 20350., 26300., 26570.,
      26840., 27110., 22420., 17367., 7440.,  10690., 14330., 14450., 14570.,
      14690., 12568., 10041., 13756., 19420., 25630., 25840., 26050., 26260.,
      22148., 17470., 22190., 31000., 40525., 40850., 41175., 41500., 34690.,
      27140., 23630., 33000., 43125., 43450., 43775., 44100., 36850., 28820.,
      25070., 35000., 45725., 46050., 46375., 46700., 39010., 30500., 25492.,
      35300., 45770., 46080., 46390., 46700., 38732., 30082., 23316., 32110.,
      41420., 41690., 41960., 42230., 34852., 26943.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    10.,   20.,   30.,   34.,   31.,   20.,   11.,   35.,
      74.,   130.,  166.,  161.,  133.,  80.,   50.,   133.,  252.,  410.,
      488.,  441.,  346.,  200.,  125.,  298.,  522.,  800.,  878.,  756.,
      571.,  320.,  200.,  463.,  792.,  1190., 1268., 1071., 796.,  440.,
      249.,  549.,  902.,  1310., 1378., 1127., 815.,  440.,  189.,  408.,
      658.,  940.,  982.,  790.,  563.,  300.,  13.,   40.,   82.,   140.,
      198.,  178.,  139.,  80.,   95.,   227.,  398.,  610.,  742.,  629.,
      469.,  260.,  266.,  601.,  1008., 1490., 1712., 1413., 1030., 560.,
      521.,  1126., 1818., 2600., 2822., 2268., 1615., 860.,  776.,  1651.,
      2628., 3710., 3932., 3123., 2200., 1160., 693.,  1461., 2306., 3230.,
      3394., 2675., 1871., 980.,  441.,  924.,  1450., 2020., 2110., 1654.,
      1151., 600.,  25.,   76.,   154.,  260.,  366.,  322.,  247.,  140.,
      179.,  419.,  722.,  1090., 1318., 1097., 805.,  440.,  482.,  1069.,
      1764., 2570., 2936., 2385., 1714., 920.,  917.,  1954., 3114., 4400.,
      4766., 3780., 2659., 1400., 1352., 2839., 4464., 6230., 6596., 5175.,
      3604., 1880., 1137., 2373., 3710., 5150., 5410., 4223., 2927., 1520.,
      693.,  1440., 2242., 3100., 3238., 2518., 1739., 900.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2775.,   4460.,   6565.,   7495.,   8425.,   9355.,   8612.,   7329.,
      7352.,   11232.,  15880.,  17520.,  19160.,  20800.,  18560.,  15392.,
      15355.,  22780.,  31425.,  33975.,  36525.,  39075.,  34180.,  27865.,
      26635.,  38460.,  51825.,  54375.,  56925.,  59475.,  51140.,  41065.,
      37915.,  54140.,  72225.,  74775.,  77325.,  79875.,  68100.,  54265.,
      46784.,  65664.,  86240.,  88680.,  91120.,  93560.,  78624.,  61832.,
      48387.,  67292.,  87625.,  89755.,  91885.,  94015.,  78356.,  61149.,
      29991.,  43436.,  58645.,  59575.,  60505.,  61435.,  52964.,  42609.,
      57080.,  81120.,  107720., 109360., 111000., 112640., 95616.,  75872.,
      94315.,  132540., 174225., 176775., 179325., 181875., 152900., 120265.,
      105595., 148220., 194625., 197175., 199725., 202275., 169860., 133465.,
      116875., 163900., 215025., 217575., 220125., 222675., 186820., 146665.,
      123392., 171392., 222880., 225320., 227760., 230200., 191520., 149192.,
      115923., 160028., 206905., 209035., 211165., 213295., 176468., 136749.,
      57207.,  82412.,  110725., 111655., 112585., 113515., 97316.,  77889.,
      106808., 151008., 199560., 201200., 202840., 204480., 172672., 136352.,
      173275., 242300., 317025., 319575., 322125., 324675., 271620., 212665.,
      184555., 257980., 337425., 339975., 342525., 345075., 288580., 225865.,
      195835., 273660., 357825., 360375., 362925., 365475., 305540., 239065.,
      200000., 277120., 359520., 361960., 364400., 366840., 304416., 236552.,
      183459., 252764., 326185., 328315., 330445., 332575., 274580., 212349.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     22.,    59.,    124.,   196.,   233.,   218.,   143.,   64.,
      224.,   496.,   896.,   1168.,  1156.,  968.,   588.,   337.,   926.,
      1791.,  2956.,  3556.,  3249.,  2570.,  1495.,  907.,   2186.,  3861.,
      5956.,  6556.,  5679.,  4310.,  2425.,  1477.,  3446.,  5931.,  8956.,
      9556.,  8109.,  6050.,  3355.,  1892.,  4184.,  6892.,  10032., 10560.,
      8656.,  6272.,  3392.,  1453.,  3142.,  5075.,  7260.,  7588.,  6113.,
      4362.,  2327.,  77.,    262.,   563.,   988.,   1444.,  1313.,  1034.,
      599.,   688.,   1664.,  2944.,  4544.,  5584.,  4756.,  3560.,  1980.,
      1993.,  4526.,  7623.,  11308., 13060., 10809., 7898.,  4303.,  4003.,
      8666.,  14013., 20068., 21820., 17559., 12518., 6673.,  6013.,  12806.,
      20403., 28828., 30580., 24309., 17138., 9043.,  5396.,  11384., 17980.,
      25200., 26496., 20896., 14624., 7664.,  3445.,  7222.,  11339., 15804.,
      16516., 12953., 9018.,  4703.,  149.,   502.,   1067.,  1852.,  2692.,
      2393.,  1850.,  1055.,  1312.,  3104.,  5392.,  8192.,  10000., 8356.,
      6152.,  3372.,  3649.,  8126.,  13455., 19660., 22564., 18369., 13226.,
      7111.,  7099.,  15146., 24165., 34180., 37084., 29439., 20726., 10921.,
      10549., 22166., 34875., 48700., 51604., 40509., 28226., 14731., 8900.,
      18584., 29068., 40368., 42432., 33136., 22976., 11936., 5437.,  11302.,
      17603., 24348., 25444., 19793., 13674., 7079.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21030.,   34024.,   50330.,   57650.,   64970.,   72290.,   66760.,
      56958.,   56632.,   86816.,   123080.,  136040.,  149000.,  161960.,
      144800.,  120280.,  119330.,  177400.,  245150.,  265350.,  285550.,
      305750.,  267800.,  218570.,  208610.,  301560.,  406750.,  426950.,
      447150.,  467350.,  402200.,  323210.,  297890.,  425720.,  568350.,
      588550.,  608750.,  628950.,  536600.,  427850.,  369304.,  518560.,
      681320.,  700680.,  720040.,  739400.,  621600.,  489016.,  382902.,
      532648.,  693770.,  710690.,  727610.,  744530.,  620680.,  484494.,
      234726.,  340456.,  460250.,  467570.,  474890.,  482210.,  416200.,
      335166.,  449080.,  638752.,  848840.,  861800.,  874760.,  887720.,
      754080.,  598744.,  744290.,  1046520., 1376350., 1396550., 1416750.,
      1436950., 1208600., 951050.,  833570.,  1170680., 1537950., 1558150.,
      1578350., 1598550., 1343000., 1055690., 922850.,  1294840., 1699550.,
      1719750., 1739950., 1760150., 1477400., 1160330., 976792.,  1357216.,
      1765480., 1784840., 1804200., 1823560., 1517600., 1182520., 919158.,
      1269160., 1641290., 1658210., 1675130., 1692050., 1400200., 1085262.,
      448422.,  646888.,  870170.,  877490.,  884810.,  892130.,  765640.,
      613374.,  841528.,  1190688., 1574600., 1587560., 1600520., 1613480.,
      1363360., 1077208., 1369250., 1915640., 2507550., 2527750., 2547950.,
      2568150., 2149400., 1683530., 1458530., 2039800., 2669150., 2689350.,
      2709550., 2729750., 2283800., 1788170., 1547810., 2163960., 2830750.,
      2850950., 2871150., 2891350., 2418200., 1892810., 1584280., 2195872.,
      2849640., 2869000., 2888360., 2907720., 2413600., 1876024., 1455414.,
      2005672., 2588810., 2605730., 2622650., 2639570., 2179720., 1686030.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    140.,    394.,    856.,    1400.,   1714.,   1628.,   1078.,
      420.,   1576.,   3596.,   6608.,   8720.,   8732.,   7368.,   4500.,
      2450.,  6868.,   13446.,  22376.,  27080.,  24894.,  19780.,  11546.,
      6890.,  16708.,  29646.,  45896.,  50600.,  43974.,  33460.,  18866.,
      11330., 26548.,  45846.,  69416.,  74120.,  63054.,  47140.,  26186.,
      14740., 32648.,  53852.,  78480.,  82640.,  67820.,  49192.,  26628.,
      11390., 24652.,  39850.,  57048.,  59640.,  48082.,  34332.,  18326.,
      510.,   1868.,   4138.,   7384.,   11000.,  10066.,  7964.,   4630.,
      5220.,  12712.,  22604.,  35024.,  43280.,  36956.,  27720.,  15444.,
      15410., 35092.,  59238.,  88040.,  101960., 84510.,  61828.,  33722.,
      31370., 67972.,  109998., 157640., 171560., 138150., 98548.,  52562.,
      47330., 100852., 160758., 227240., 241160., 191790., 135268., 71402.,
      42580., 89864.,  141980., 199056., 209360., 165164., 115624., 60612.,
      27230., 57100.,  89674.,  125016., 130680., 102514., 71388.,  37238.,
      990.,   3596.,   7882.,   13912.,  20600.,  18418.,  14300.,  8182.,
      10020., 23848.,  41612.,  63440.,  77840.,  65180.,  48072.,  26388.,
      28370., 63316.,  105030., 153704., 176840., 144126., 103876., 55898.,
      55850., 119236., 190350., 269384., 292520., 232326., 163636., 86258.,
      83330., 175156., 275670., 385064., 408200., 320526., 223396., 116618.,
      70420., 147080., 230108., 319632., 336080., 262508., 182056., 94596.,
      43070., 89548.,  139498., 192984., 201720., 156946., 108444., 56150.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      678.,   768.,   1094.,  1220.,  1615.,  1780.,  1840.,  2020.,  2065.,
      2260.,  2290.,  2500.,  2114.,  2288.,  1803.,  1938.,  1808.,  1976.,
      2768.,  3000.,  3920.,  4220.,  4320.,  4640.,  4720.,  5060.,  5120.,
      5480.,  4576.,  4872.,  3800.,  4028.,  3790.,  4060.,  5630.,  6000.,
      7775.,  8250.,  8400.,  8900.,  9025.,  9550.,  9650.,  10200., 8450.,
      8900.,  6895.,  7240.,  6550.,  6940.,  9470.,  10000., 12775., 13450.,
      13400., 14100., 14025., 14750., 14650., 15400., 12610., 13220., 10135.,
      10600., 9310.,  9820.,  13310., 14000., 17775., 18650., 18400., 19300.,
      19025., 19950., 19650., 20600., 16770., 17540., 13375., 13960., 11552.,
      12008., 16224., 16840., 21320., 22100., 21920., 22720., 22520., 23340.,
      23120., 23960., 19440., 20120., 15296., 15812., 11982., 12360., 16670.,
      17180., 21715., 22360., 22240., 22900., 22765., 23440., 23290., 23980.,
      19418., 19976., 15159., 15582., 7230.,  7824.,  10502., 11300., 14215.,
      15220., 14440., 15460., 14665., 15700., 14890., 15940., 12866., 13712.,
      10371., 11010., 13904., 14744., 19792., 20920., 26320., 27740., 26720.,
      28160., 27120., 28580., 27520., 29000., 23392., 24584., 18584., 19484.,
      23110., 24220., 32510., 34000., 42775., 44650., 43400., 45300., 44025.,
      45950., 44650., 46600., 37570., 39140., 29575., 30760., 25870., 27100.,
      36350., 38000., 47775., 49850., 48400., 50500., 49025., 51150., 49650.,
      51800., 41730., 43460., 32815., 34120., 28630., 29980., 40190., 42000.,
      52775., 55050., 53400., 55700., 54025., 56350., 54650., 57000., 45890.,
      47780., 36055., 37480., 30368., 31496., 42208., 43720., 54920., 56820.,
      55520., 57440., 56120., 58060., 56720., 58680., 47216., 48792., 36800.,
      37988., 28614., 29496., 39518., 40700., 51115., 52600., 51640., 53140.,
      52165., 53680., 52690., 54220., 43610., 44840., 33807., 34734., 13782.,
      14880., 19910., 21380., 26815., 28660., 27040., 28900., 27265., 29140.,
      27490., 29380., 23618., 25136., 18939., 20082., 26000., 27512., 36816.,
      38840., 48720., 51260., 49120., 51680., 49520., 52100., 49920., 52520.,
      42208., 44296., 33368., 34940., 42430., 44380., 59390., 62000., 77775.,
      81050., 78400., 81700., 79025., 82350., 79650., 83000., 66690., 69380.,
      52255., 54280., 45190., 47260., 63230., 66000., 82775., 86250., 83400.,
      86900., 84025., 87550., 84650., 88200., 70850., 73700., 55495., 57640.,
      47950., 50140., 67070., 70000., 87775., 91450., 88400., 92100., 89025.,
      92750., 89650., 93400., 75010., 78020., 58735., 61000., 49184., 50984.,
      68192., 70600., 88520., 91540., 89120., 92160., 89720., 92780., 90320.,
      93400., 74992., 77464., 58304., 60164., 45246., 46632., 62366., 64220.,
      80515., 82840., 81040., 83380., 81565., 83920., 82090., 84460., 67802.,
      69704., 52455., 53886.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,     2.,     5.,     8.,    14.,    20.,    30.,    40.,    50.,
      60.,    59.,    68.,    55.,   62.,    36.,    40.,    16.,    22.,
      56.,    70.,    124.,   148.,  224.,   260.,   296.,   332.,   292.,
      322.,   244.,   266.,   148.,  160.,   85.,    100.,   233.,   266.,
      450.,   504.,   742.,   820.,  898.,   976.,   819.,   882.,   647.,
      692.,   376.,   400.,   235.,  250.,   563.,   596.,   990.,   1044.,
      1522.,  1600.,  1678.,  1756., 1449.,  1512.,  1097.,  1142.,  616.,
      640.,   385.,   400.,   893.,  926.,   1530.,  1584.,  2302.,  2380.,
      2458.,  2536.,  2079.,  2142., 1547.,  1592.,  856.,   880.,   484.,
      498.,   1068.,  1098.,  1756., 1804.,  2552.,  2620.,  2688.,  2756.,
      2200.,  2254.,  1592.,  1630., 860.,   880.,   369.,   378.,   797.,
      816.,   1286.,  1316.,  1838., 1880.,  1922.,  1964.,  1547.,  1580.,
      1103.,  1126.,  588.,   600.,  13.,    26.,    53.,    80.,    122.,
      164.,   222.,   280.,   338.,  396.,   311.,   356.,   247.,   278.,
      144.,   160.,   160.,   190.,  392.,   454.,   700.,   796.,   1088.,
      1220.,  1352.,  1484.,  1156., 1258.,  868.,   938.,   484.,   520.,
      481.,   532.,   1097.,  1202., 1854.,  2016.,  2758.,  2980.,  3202.,
      3424.,  2655.,  2826.,  1943., 2060.,  1060.,  1120.,  991.,   1042.,
      2147.,  2252.,  3474.,  3636., 4978.,  5200.,  5422.,  5644.,  4365.,
      4536.,  3113.,  3230.,  1660., 1720.,  1501.,  1552.,  3197.,  3302.,
      5094.,  5256.,  7198.,  7420., 7642.,  7864.,  6075.,  6246.,  4283.,
      4400.,  2260.,  2320.,  1348., 1386.,  2844.,  2922.,  4492.,  4612.,
      6296.,  6460.,  6624.,  6788., 5224.,  5350.,  3656.,  3742.,  1916.,
      1960.,  861.,   882.,   1805., 1848.,  2834.,  2900.,  3950.,  4040.,
      4130.,  4220.,  3239.,  3308., 2255.,  2302.,  1176.,  1200.,  25.,
      50.,    101.,   152.,   230.,  308.,   414.,   520.,   626.,   732.,
      563.,   644.,   439.,   494.,  252.,   280.,   304.,   358.,   728.,
      838.,   1276.,  1444.,  1952., 2180.,  2408.,  2636.,  2020.,  2194.,
      1492.,  1610.,  820.,   880.,  877.,   964.,   1961.,  2138.,  3258.,
      3528.,  4774.,  5140.,  5506., 5872.,  4491.,  4770.,  3239.,  3428.,
      1744.,  1840.,  1747.,  1834., 3731.,  3908.,  5958.,  6228.,  8434.,
      8800.,  9166.,  9532.,  7281., 7560.,  5129.,  5318.,  2704.,  2800.,
      2617.,  2704.,  5501.,  5678., 8658.,  8928.,  12094., 12460., 12826.,
      13192., 10071., 10350., 7019., 7208.,  3664.,  3760.,  2212.,  2274.,
      4620.,  4746.,  7228.,  7420., 10040., 10300., 10560., 10820., 8248.,
      8446.,  5720.,  5854.,  2972., 3040.,  1353.,  1386.,  2813.,  2880.,
      4382.,  4484.,  6062.,  6200., 6338.,  6476.,  4931.,  5036.,  3407.,
      3478.,  1764.,  1800.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5019.,   5721.,   8176.,   9160.,   12155.,  13445.,  13925.,  15335.,
      15695.,  17225.,  17465.,  19115.,  16192.,  17560.,  13857.,  14919.,
      13708.,  15028.,  21088.,  22912.,  29980.,  32340.,  33140.,  35660.,
      36300.,  38980.,  39460.,  42300.,  35360.,  37696.,  29428.,  31228.,
      29105.,  31235.,  43360.,  46280.,  60025.,  63775.,  64975.,  68925.,
      69925.,  74075.,  74875.,  79225.,  65680.,  69240.,  53675.,  56405.,
      50945.,  54035.,  73760.,  77960.,  99625.,  104975., 104575., 110125.,
      109525., 115275., 114475., 120425., 98640.,  103480., 79355.,  83045.,
      72785.,  76835.,  104160., 109640., 139225., 146175., 144175., 151325.,
      149125., 156475., 154075., 161625., 131600., 137720., 105035., 109685.,
      90844.,  94468.,  127648., 132544., 167820., 174020., 172580., 178940.,
      177340., 183860., 182100., 188780., 153184., 158592., 120580., 124684.,
      94515.,  97521.,  131536., 135592., 171395., 176525., 175565., 180815.,
      179735., 185105., 183905., 189395., 153376., 157816., 119769., 123135.,
      56427.,  61161.,  82096.,  88456.,  111275., 119285., 113045., 121175.,
      114815., 123065., 116585., 124955., 100864., 107608., 81393.,  86487.,
      109132., 115828., 155488., 164480., 206940., 218260., 210100., 221580.,
      213260., 224900., 216420., 228220., 184096., 193600., 146356., 153532.,
      181985., 190835., 256160., 268040., 337225., 352175., 342175., 357325.,
      347125., 362475., 352075., 367625., 296400., 308920., 233435., 242885.,
      203825., 213635., 286560., 299720., 376825., 393375., 381775., 398525.,
      386725., 403675., 391675., 408825., 329360., 343160., 259115., 269525.,
      225665., 236435., 316960., 331400., 416425., 434575., 421375., 439725.,
      426325., 444875., 431275., 450025., 362320., 377400., 284795., 296165.,
      240028., 249028., 333728., 345792., 434380., 449540., 439140., 454460.,
      443900., 459380., 448660., 464300., 373600., 386176., 291268., 300748.,
      226563., 233601., 312976., 322408., 404915., 416765., 409085., 421055.,
      413255., 425345., 417425., 429635., 345568., 355384., 267945., 275343.,
      107835., 116601., 156016., 167752., 210395., 225125., 212165., 227015.,
      213935., 228905., 215705., 230795., 185536., 197656., 148929., 158055.,
      204556., 216628., 289888., 306048., 383900., 404180., 387060., 407500.,
      390220., 410820., 393380., 414140., 332832., 349504., 263284., 275836.,
      334865., 350435., 468960., 489800., 614425., 640575., 619375., 645725.,
      624325., 650875., 629275., 656025., 527120., 548600., 413195., 429365.,
      356705., 373235., 499360., 521480., 654025., 681775., 658975., 686925.,
      663925., 692075., 668875., 697225., 560080., 582840., 438875., 456005.,
      378545., 396035., 529760., 553160., 693625., 722975., 698575., 728125.,
      703525., 733275., 708475., 738425., 593040., 617080., 464555., 482645.,
      389212., 403588., 539808., 559040., 700940., 725060., 705700., 729980.,
      710460., 734900., 715220., 739820., 594016., 613760., 461956., 476812.,
      358611., 369681., 494416., 509224., 638435., 657005., 642605., 661295.,
      646775., 665585., 650945., 669875., 537760., 552952., 416121., 427551.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,      11.,    28.,    48.,    85.,    127.,   192.,   264.,   336.,
      408.,    415.,   481.,   396.,   448.,   263.,   293.,   94.,    138.,
      368.,    472.,   854.,   1034.,  1584.,  1856.,  2128.,  2400.,  2138.,
      2366.,   1808.,  1976.,  1106.,  1198.,  587.,   701.,   1660.,  1912.,
      3267.,   3681.,  5456.,  6056.,  6656.,  7256.,  6129.,  6615.,  4876.,
      5224.,   2849.,  3035.,  1727.,  1841.,  4180.,  4432.,  7407.,  7821.,
      11456.,  12056., 12656., 13256., 10989., 11475., 8356.,  8704.,  4709.,
      4895.,   2867.,  2981.,  6700.,  6952.,  11547., 11961., 17456., 18056.,
      18656.,  19256., 15849., 16335., 11836., 12184., 6569.,  6755.,  3702.,
      3810.,   8192.,  8424.,  13502., 13874., 19664., 20192., 20720., 21248.,
      16994.,  17414., 12320., 12616., 6666.,  6822.,  2853.,  2923.,  6172.,
      6320.,   9973.,  10207., 14272., 14600., 14928., 15256., 12031., 12289.,
      8588.,   8768.,  4583.,  4677.,  77.,    179.,   364.,   576.,   877.,
      1207.,   1632.,  2088.,  2544.,  3000.,  2359.,  2713.,  1884.,  2128.,
      1103.,   1229.,  1198.,  1434.,  2960.,  3448.,  5318.,  6074.,  8304.,
      9344.,   10384., 11424., 8906.,  9710.,  6704.,  7256.,  3746.,  4030.,
      3683.,   4085.,  8428.,  9256.,  14283., 15561., 21296., 23048., 24800.,
      26552.,  20601., 21951., 15100., 16024., 8249.,  8723.,  7703.,  8105.,
      16708.,  17536., 27063., 28341., 38816., 40568., 42320., 44072., 34101.,
      35451.,  24340., 25264., 12989., 13463., 11723., 12125., 24988., 25816.,
      39843.,  41121., 56336., 58088., 59840., 61592., 47601., 48951., 33580.,
      34504.,  17729., 18203., 10566., 10866., 22304., 22920., 35246., 36194.,
      49424.,  50720., 52016., 53312., 41042., 42038., 28736., 29416., 15066.,
      15414.,  6765.,  6931.,  14188., 14528., 22285., 22807., 31072., 31784.,
      32496.,  33208., 25495., 26041., 17756., 18128., 9263.,  9453.,  149.,
      347.,    700.,   1104.,  1669.,  2287.,  3072.,  3912.,  4752.,  5592.,
      4303.,   4945.,  3372.,  3808.,  1943.,  2165.,  2302.,  2730.,  5552.,
      6424.,   9782.,  11114., 15024., 16832., 18640., 20448., 15674., 17054.,
      11600.,  12536., 6386.,  6862.,  6779.,  7469.,  15196., 16600., 25299.,
      27441.,  37136., 40040., 42944., 45848., 35073., 37287., 25324., 26824.,
      13649.,  14411., 13679., 14369., 29236., 30640., 46719., 48861., 66176.,
      69080.,  71984., 74888., 57213., 59427., 40324., 41824., 21269., 22031.,
      20579.,  21269., 43276., 44680., 68139., 70281., 95216., 98120., 101024.,
      103928., 79353., 81567., 55324., 56824., 28889., 29651., 17430., 17922.,
      36416.,  37416., 56990., 58514., 79184., 81248., 83312., 85376., 65090.,
      66662.,  45152., 46216., 23466., 24006., 10677., 10939., 22204., 22736.,
      34597.,  35407., 47872., 48968., 50064., 51160., 38959., 39793., 26924.,
      27488.,  13943., 14229.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38550.,   44094.,   63128.,   70904.,   94210.,   104410.,  108250.,
      119410.,  122290.,  134410.,  136330.,  149410.,  126680.,  137528.,
      108606.,  117030.,  106664.,  117128.,  164512.,  178976.,  234360.,
      253080.,  259480.,  279480.,  284600.,  305880.,  309720.,  332280.,
      277920.,  296480.,  231560.,  245864.,  228010.,  244930.,  340200.,
      363400.,  471550.,  501350.,  510950.,  542350.,  550350.,  583350.,
      589750.,  624350.,  517800.,  546120.,  423490.,  445210.,  401770.,
      426370.,  582120.,  615560.,  786750.,  829350.,  826150.,  870350.,
      865550.,  911350.,  904950.,  952350.,  780200.,  818760.,  627970.,
      657370.,  575530.,  607810.,  824040.,  867720.,  1101950., 1157350.,
      1141350., 1198350., 1180750., 1239350., 1220150., 1280350., 1042600.,
      1091400., 832450.,  869530.,  720488.,  749384.,  1012640., 1051680.,
      1331640., 1381080., 1369560., 1420280., 1407480., 1459480., 1445400.,
      1498680., 1216160., 1259296., 957512.,  990248.,  750774.,  774750.,
      1045016., 1077368., 1361890., 1402810., 1395130., 1437010., 1428370.,
      1471210., 1461610., 1505410., 1219160., 1254584., 952158.,  979014.,
      445782.,  483582.,  649112.,  699896.,  880450.,  944410.,  894490.,
      959410.,  908530.,  974410.,  922570.,  989410.,  798680.,  852536.,
      644862.,  685542.,  864680.,  918152.,  1232544., 1304352., 1641080.,
      1731480., 1666200., 1757880., 1691320., 1784280., 1716440., 1810680.,
      1460640., 1536544., 1161608., 1218920., 1444330., 1515010., 2033640.,
      2128520., 2677950., 2797350., 2717350., 2838350., 2756750., 2879350.,
      2796150., 2920350., 2354600., 2454600., 1854850., 1930330., 1618090.,
      1696450., 2275560., 2380680., 2993150., 3125350., 3032550., 3166350.,
      3071950., 3207350., 3111350., 3248350., 2617000., 2727240., 2059330.,
      2142490., 1791850., 1877890., 2517480., 2632840., 3308350., 3453350.,
      3347750., 3494350., 3387150., 3535350., 3426550., 3576350., 2879400.,
      2999880., 2263810., 2354650., 1908584., 1980488., 2654112., 2750496.,
      3455160., 3576280., 3493080., 3615480., 3531000., 3654680., 3568920.,
      3693880., 2972320., 3072800., 2317640., 2393384., 1803126., 1859358.,
      2491160., 2566520., 3223330., 3318010., 3256570., 3352210., 3289810.,
      3386410., 3323050., 3420610., 2751320., 2829752., 2133534., 2192646.,
      853014.,  923070.,  1235096., 1328888., 1666690., 1784410., 1680730.,
      1799410., 1694770., 1814410., 1708810., 1829410., 1470680., 1567544.,
      1181118., 1254054., 1622696., 1719176., 2300576., 2429728., 3047800.,
      3209880., 3072920., 3236280., 3098040., 3262680., 3123160., 3289080.,
      2643360., 2776608., 2091656., 2191976., 2660650., 2785090., 3727080.,
      3893640., 4884350., 5093350., 4923750., 5134350., 4963150., 5175350.,
      5002550., 5216350., 4191400., 4363080., 3286210., 3415450., 2834410.,
      2966530., 3969000., 4145800., 5199550., 5421350., 5238950., 5462350.,
      5278350., 5503350., 5317750., 5544350., 4453800., 4635720., 3490690.,
      3627610., 3008170., 3147970., 4210920., 4397960., 5514750., 5749350.,
      5554150., 5790350., 5593550., 5831350., 5632950., 5872350., 4716200.,
      4908360., 3695170., 3839770., 3096680., 3211592., 4295584., 4449312.,
      5578680., 5771480., 5616600., 5810680., 5654520., 5849880., 5692440.,
      5889080., 4728480., 4886304., 3677768., 3796520., 2855478., 2943966.,
      3937304., 4055672., 5084770., 5233210., 5118010., 5267410., 5151250.,
      5301610., 5184490., 5335810., 4283480., 4404920., 3314910., 3406278.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,    324.,    578.,    890.,    1352.,   1896.,
      2440.,   2984.,   3098.,   3602.,   2996.,   3396.,   2006.,   2238.,
      620.,    956.,    2632.,   3432.,   6292.,   7684.,   11856.,  13968.,
      16080.,  18192.,  16324.,  18100.,  13896.,  15208.,  8540.,   9260.,
      4330.,   5218.,   12476.,  14444.,  24822.,  28062.,  41752.,  46456.,
      51160.,  55864.,  47358.,  51174.,  37820.,  40556.,  22162.,  23626.,
      13210.,  14098.,  32156.,  34124.,  57222.,  60462.,  88792.,  93496.,
      98200.,  102904., 85518.,  89334.,  65180.,  67916.,  36802.,  38266.,
      22090.,  22978.,  51836.,  53804.,  89622.,  92862.,  135832., 140536.,
      145240., 149944., 123678., 127494., 92540.,  95276.,  51442.,  52906.,
      28940.,  29788.,  64136.,  65960.,  105844., 108772., 154320., 158480.,
      162640., 166800., 133540., 136852., 96904.,  99240.,  52476.,  53708.,
      22430.,  22982.,  48564.,  49732.,  78530.,  80378.,  112456., 115048.,
      117640., 120232., 94874.,  96914.,  67764.,  69188.,  36182.,  36926.,
      510.,    1318.,   2676.,   4356.,   6626.,   9242.,   12488.,  16104.,
      19720.,  23336.,  18362.,  21170.,  14708.,  16644.,  8630.,   9630.,
      9260.,   11132.,  22984.,  26856.,  41428.,  47428.,  64848.,  73104.,
      81360.,  89616.,  69892.,  76276.,  52680.,  57064.,  29468.,  31724.,
      28810.,  32002.,  66044.,  72620.,  112086., 122238., 167320., 181240.,
      195160., 209080., 162270., 172998., 119036., 126380., 65074.,  68842.,
      60730.,  63922.,  131804., 138380., 213606., 223758., 306520., 320440.,
      334360., 348280., 269550., 280278., 192476., 199820., 102754., 106522.,
      92650.,  95842.,  197564., 204140., 315126., 325278., 445720., 459640.,
      473560., 487480., 376830., 387558., 265916., 273260., 140434., 144202.,
      83660.,  86044.,  176648., 181544., 279220., 286756., 391632., 401936.,
      412240., 422544., 325348., 333268., 227848., 233256., 119484., 122252.,
      53630.,  54950.,  112500., 115204., 176738., 180890., 246472., 252136.,
      257800., 263464., 202298., 206642., 140916., 143876., 73526.,  75038.,
      990.,    2566.,   5172.,   8388.,   12674.,  17594.,  23624.,  30312.,
      37000.,  43688.,  33626.,  38738.,  26420.,  29892.,  15254.,  17022.,
      17900.,  21308.,  43336.,  50280.,  76564.,  87172.,  117840., 132240.,
      146640., 161040., 123460., 134452., 91464.,  98920.,  50396.,  54188.,
      53290.,  58786.,  119612., 130796., 199350., 216414., 292888., 316024.,
      339160., 362296., 277182., 294822., 200252., 212204., 107986., 114058.,
      108250., 113746., 231452., 242636., 369990., 387054., 524248., 547384.,
      570520., 593656., 453582., 471222., 319772., 331724., 168706., 174778.,
      163210., 168706., 343292., 354476., 540630., 557694., 755608., 778744.,
      801880., 825016., 629982., 647622., 439292., 451244., 229426., 235498.,
      138380., 142300., 289160., 297128., 452596., 464740., 628944., 645392.,
      661840., 678288., 517156., 529684., 358792., 367272., 186492., 190796.,
      84830.,  86918.,  176436., 180676., 274946., 281402., 380488., 389224.,
      397960., 406696., 309722., 316370., 214068., 218564., 110870., 113150.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1266.,   1356.,   1446.,   1536.,   2062.,   2188.,   2314.,   2440.,
      3065.,   3230.,   3395.,   3560.,   3500.,   3680.,   3860.,   4040.,
      3935.,   4130.,   4325.,   4520.,   4370.,   4580.,   4790.,   5000.,
      4054.,   4228.,   4402.,   4576.,   3471.,   3606.,   3741.,   3876.,
      3448.,   3616.,   3784.,   3952.,   5304.,   5536.,   5768.,   6000.,
      7540.,   7840.,   8140.,   8440.,   8320.,   8640.,   8960.,   9280.,
      9100.,   9440.,   9780.,   10120.,  9880.,   10240.,  10600.,  10960.,
      8856.,   9152.,   9448.,   9744.,   7372.,   7600.,   7828.,   8056.,
      7310.,   7580.,   7850.,   8120.,   10890.,  11260.,  11630.,  12000.,
      15075.,  15550.,  16025.,  16500.,  16300.,  16800.,  17300.,  17800.,
      17525.,  18050.,  18575.,  19100.,  18750.,  19300.,  19850.,  20400.,
      16450.,  16900.,  17350.,  17800.,  13445.,  13790.,  14135.,  14480.,
      12710.,  13100.,  13490.,  13880.,  18410.,  18940.,  19470.,  20000.,
      24875.,  25550.,  26225.,  26900.,  26100.,  26800.,  27500.,  28200.,
      27325.,  28050.,  28775.,  29500.,  28550.,  29300.,  30050.,  30800.,
      24610.,  25220.,  25830.,  26440.,  19805.,  20270.,  20735.,  21200.,
      18110.,  18620.,  19130.,  19640.,  25930.,  26620.,  27310.,  28000.,
      34675.,  35550.,  36425.,  37300.,  35900.,  36800.,  37700.,  38600.,
      37125.,  38050.,  38975.,  39900.,  38350.,  39300.,  40250.,  41200.,
      32770.,  33540.,  34310.,  35080.,  26165.,  26750.,  27335.,  27920.,
      22648.,  23104.,  23560.,  24016.,  31832.,  32448.,  33064.,  33680.,
      41860.,  42640.,  43420.,  44200.,  43040.,  43840.,  44640.,  45440.,
      44220.,  45040.,  45860.,  46680.,  45400.,  46240.,  47080.,  47920.,
      38200.,  38880.,  39560.,  40240.,  30076.,  30592.,  31108.,  31624.,
      23586.,  23964.,  24342.,  24720.,  32830.,  33340.,  33850.,  34360.,
      42785.,  43430.,  44075.,  44720.,  43820.,  44480.,  45140.,  45800.,
      44855.,  45530.,  46205.,  46880.,  45890.,  46580.,  47270.,  47960.,
      38278.,  38836.,  39394.,  39952.,  29895.,  30318.,  30741.,  31164.,
      13866.,  14460.,  15054.,  15648.,  20206.,  21004.,  21802.,  22600.,
      27425.,  28430.,  29435.,  30440.,  27860.,  28880.,  29900.,  30920.,
      28295.,  29330.,  30365.,  31400.,  28730.,  29780.,  30830.,  31880.,
      24886.,  25732.,  26578.,  27424.,  20103.,  20742.,  21381.,  22020.,
      26968.,  27808.,  28648.,  29488.,  38456.,  39584.,  40712.,  41840.,
      51220.,  52640.,  54060.,  55480.,  52000.,  53440.,  54880.,  56320.,
      52780.,  54240.,  55700.,  57160.,  53560.,  55040.,  56520.,  58000.,
      45592.,  46784.,  47976.,  49168.,  36268.,  37168.,  38068.,  38968.,
      45110.,  46220.,  47330.,  48440.,  63530.,  65020.,  66510.,  68000.,
      83675.,  85550.,  87425.,  89300.,  84900.,  86800.,  88700.,  90600.,
      86125.,  88050.,  89975.,  91900.,  87350.,  89300.,  91250.,  93200.,
      73570.,  75140.,  76710.,  78280.,  57965.,  59150.,  60335.,  61520.,
      50510.,  51740.,  52970.,  54200.,  71050.,  72700.,  74350.,  76000.,
      93475.,  95550.,  97625.,  99700.,  94700.,  96800.,  98900.,  101000.,
      95925.,  98050.,  100175., 102300., 97150.,  99300.,  101450., 103600.,
      81730.,  83460.,  85190.,  86920.,  64325.,  65630.,  66935.,  68240.,
      55910.,  57260.,  58610.,  59960.,  78570.,  80380.,  82190.,  84000.,
      103275., 105550., 107825., 110100., 104500., 106800., 109100., 111400.,
      105725., 108050., 110375., 112700., 106950., 109300., 111650., 114000.,
      89890.,  91780.,  93670.,  95560.,  70685.,  72110.,  73535.,  74960.,
      59608.,  60736.,  61864.,  62992.,  82904.,  84416.,  85928.,  87440.,
      107940., 109840., 111740., 113640., 109120., 111040., 112960., 114880.,
      110300., 112240., 114180., 116120., 111480., 113440., 115400., 117360.,
      92856.,  94432.,  96008.,  97584.,  72412.,  73600.,  74788.,  75976.,
      56346.,  57228.,  58110.,  58992.,  77854.,  79036.,  80218.,  81400.,
      100745., 102230., 103715., 105200., 101780., 103280., 104780., 106280.,
      102815., 104330., 105845., 107360., 103850., 105380., 106910., 108440.,
      85990.,  87220.,  88450.,  89680.,  66687.,  67614.,  68541.,  69468.,
      26466.,  27564.,  28662.,  29760.,  38350.,  39820.,  41290.,  42760.,
      51785.,  53630.,  55475.,  57320.,  52220.,  54080.,  55940.,  57800.,
      52655.,  54530.,  56405.,  58280.,  53090.,  54980.,  56870.,  58760.,
      45718.,  47236.,  48754.,  50272.,  36735.,  37878.,  39021.,  40164.,
      50488.,  52000.,  53512.,  55024.,  71608.,  73632.,  75656.,  77680.,
      94900.,  97440.,  99980.,  102520., 95680.,  98240.,  100800., 103360.,
      96460.,  99040.,  101620., 104200., 97240.,  99840.,  102440., 105040.,
      82328.,  84416.,  86504.,  88592.,  65164.,  66736.,  68308.,  69880.,
      82910.,  84860.,  86810.,  88760.,  116170., 118780., 121390., 124000.,
      152275., 155550., 158825., 162100., 153500., 156800., 160100., 163400.,
      154725., 158050., 161375., 164700., 155950., 159300., 162650., 166000.,
      130690., 133380., 136070., 138760., 102485., 104510., 106535., 108560.,
      88310.,  90380.,  92450.,  94520.,  123690., 126460., 129230., 132000.,
      162075., 165550., 169025., 172500., 163300., 166800., 170300., 173800.,
      164525., 168050., 171575., 175100., 165750., 169300., 172850., 176400.,
      138850., 141700., 144550., 147400., 108845., 110990., 113135., 115280.,
      93710.,  95900.,  98090.,  100280., 131210., 134140., 137070., 140000.,
      171875., 175550., 179225., 182900., 173100., 176800., 180500., 184200.,
      174325., 178050., 181775., 185500., 175550., 179300., 183050., 186800.,
      147010., 150020., 153030., 156040., 115205., 117470., 119735., 122000.,
      96568.,  98368.,  100168., 101968., 133976., 136384., 138792., 141200.,
      174020., 177040., 180060., 183080., 175200., 178240., 181280., 184320.,
      176380., 179440., 182500., 185560., 177560., 180640., 183720., 186800.,
      147512., 149984., 152456., 154928., 114748., 116608., 118468., 120328.,
      89106.,  90492.,  91878.,  93264.,  122878., 124732., 126586., 128440.,
      158705., 161030., 163355., 165680., 159740., 162080., 164420., 166760.,
      160775., 163130., 165485., 167840., 161810., 164180., 166550., 168920.,
      133702., 135604., 137506., 139408., 103479., 104910., 106341., 107772.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,     2.,     3.,     4.,     7.,     10.,    13.,    16.,    22.,
      28.,    34.,    40.,    50.,    60.,    70.,    80.,    90.,    100.,
      110.,   120.,   109.,   118.,   127.,   136.,   103.,   110.,   117.,
      124.,   68.,    72.,    76.,    80.,    26.,    32.,    38.,    44.,
      98.,    112.,   126.,   140.,   224.,   248.,   272.,   296.,   412.,
      448.,   484.,   520.,   556.,   592.,   628.,   664.,   554.,   584.,
      614.,   644.,   466.,   488.,   510.,   532.,   284.,   296.,   308.,
      320.,   155.,   170.,   185.,   200.,   433.,   466.,   499.,   532.,
      846.,   900.,   954.,   1008.,  1406.,  1484.,  1562.,  1640.,  1718.,
      1796.,  1874.,  1952.,  1575.,  1638.,  1701.,  1764.,  1249.,  1294.,
      1339.,  1384.,  728.,   752.,   776.,   800.,   455.,   470.,   485.,
      500.,   1093.,  1126.,  1159.,  1192.,  1926.,  1980.,  2034.,  2088.,
      2966.,  3044.,  3122.,  3200.,  3278.,  3356.,  3434.,  3512.,  2835.,
      2898.,  2961.,  3024.,  2149.,  2194.,  2239.,  2284.,  1208.,  1232.,
      1256.,  1280.,  755.,   770.,   785.,   800.,   1753.,  1786.,  1819.,
      1852.,  3006.,  3060.,  3114.,  3168.,  4526.,  4604.,  4682.,  4760.,
      4838.,  4916.,  4994.,  5072.,  4095.,  4158.,  4221.,  4284.,  3049.,
      3094.,  3139.,  3184.,  1688.,  1712.,  1736.,  1760.,  954.,   968.,
      982.,   996.,   2106.,  2136.,  2166.,  2196.,  3464.,  3512.,  3560.,
      3608.,  5036.,  5104.,  5172.,  5240.,  5308.,  5376.,  5444.,  5512.,
      4346.,  4400.,  4454.,  4508.,  3146.,  3184.,  3222.,  3260.,  1700.,
      1720.,  1740.,  1760.,  729.,   738.,   747.,   756.,   1575.,  1594.,
      1613.,  1632.,  2542.,  2572.,  2602.,  2632.,  3634.,  3676.,  3718.,
      3760.,  3802.,  3844.,  3886.,  3928.,  3061.,  3094.,  3127.,  3160.,
      2183.,  2206.,  2229.,  2252.,  1164.,  1176.,  1188.,  1200.,  13.,
      26.,    39.,    52.,    79.,    106.,   133.,   160.,   202.,   244.,
      286.,   328.,   386.,   444.,   502.,   560.,   618.,   676.,   734.,
      792.,   577.,   622.,   667.,   712.,   463.,   494.,   525.,   556.,
      272.,   288.,   304.,   320.,   290.,   320.,   350.,   380.,   722.,
      784.,   846.,   908.,   1304.,  1400.,  1496.,  1592.,  2044.,  2176.,
      2308.,  2440.,  2572.,  2704.,  2836.,  2968.,  2210.,  2312.,  2414.,
      2516.,  1666.,  1736.,  1806.,  1876.,  932.,   968.,   1004.,  1040.,
      911.,   962.,   1013.,  1064.,  2089.,  2194.,  2299.,  2404.,  3546.,
      3708.,  3870.,  4032.,  5294.,  5516.,  5738.,  5960.,  6182.,  6404.,
      6626.,  6848.,  5139.,  5310.,  5481.,  5652.,  3769.,  3886.,  4003.,
      4120.,  2060.,  2120.,  2180.,  2240.,  1931.,  1982.,  2033.,  2084.,
      4189.,  4294.,  4399.,  4504.,  6786.,  6948.,  7110.,  7272.,  9734.,
      9956.,  10178., 10400., 10622., 10844., 11066., 11288., 8559.,  8730.,
      8901.,  9072.,  6109.,  6226.,  6343.,  6460.,  3260.,  3320.,  3380.,
      3440.,  2951.,  3002.,  3053.,  3104.,  6289.,  6394.,  6499.,  6604.,
      10026., 10188., 10350., 10512., 14174., 14396., 14618., 14840., 15062.,
      15284., 15506., 15728., 11979., 12150., 12321., 12492., 8449.,  8566.,
      8683.,  8800.,  4460.,  4520.,  4580.,  4640.,  2658.,  2696.,  2734.,
      2772.,  5610.,  5688.,  5766.,  5844.,  8864.,  8984.,  9104.,  9224.,
      12428., 12592., 12756., 12920., 13084., 13248., 13412., 13576., 10322.,
      10448., 10574., 10700., 7226.,  7312.,  7398.,  7484.,  3788.,  3832.,
      3876.,  3920.,  1701.,  1722.,  1743.,  1764.,  3567.,  3610.,  3653.,
      3696.,  5602.,  5668.,  5734.,  5800.,  7810.,  7900.,  7990.,  8080.,
      8170.,  8260.,  8350.,  8440.,  6409.,  6478.,  6547.,  6616.,  4463.,
      4510.,  4557.,  4604.,  2328.,  2352.,  2376.,  2400.,  25.,    50.,
      75.,    100.,   151.,   202.,   253.,   304.,   382.,   460.,   538.,
      616.,   722.,   828.,   934.,   1040.,  1146.,  1252.,  1358.,  1464.,
      1045.,  1126.,  1207.,  1288.,  823.,   878.,   933.,   988.,   476.,
      504.,   532.,   560.,   554.,   608.,   662.,   716.,   1346.,  1456.,
      1566.,  1676.,  2384.,  2552.,  2720.,  2888.,  3676.,  3904.,  4132.,
      4360.,  4588.,  4816.,  5044.,  5272.,  3866.,  4040.,  4214.,  4388.,
      2866.,  2984.,  3102.,  3220.,  1580.,  1640.,  1700.,  1760.,  1667.,
      1754.,  1841.,  1928.,  3745.,  3922.,  4099.,  4276.,  6246.,  6516.,
      6786.,  7056.,  9182.,  9548.,  9914.,  10280., 10646., 11012., 11378.,
      11744., 8703.,  8982.,  9261.,  9540.,  6289.,  6478.,  6667.,  6856.,
      3392.,  3488.,  3584.,  3680.,  3407.,  3494.,  3581.,  3668.,  7285.,
      7462.,  7639.,  7816.,  11646., 11916., 12186., 12456., 16502., 16868.,
      17234., 17600., 17966., 18332., 18698., 19064., 14283., 14562., 14841.,
      15120., 10069., 10258., 10447., 10636., 5312.,  5408.,  5504.,  5600.,
      5147.,  5234.,  5321.,  5408.,  10825., 11002., 11179., 11356., 17046.,
      17316., 17586., 17856., 23822., 24188., 24554., 24920., 25286., 25652.,
      26018., 26384., 19863., 20142., 20421., 20700., 13849., 14038., 14227.,
      14416., 7232.,  7328.,  7424.,  7520.,  4362.,  4424.,  4486.,  4548.,
      9114.,  9240.,  9366.,  9492.,  14264., 14456., 14648., 14840., 19820.,
      20080., 20340., 20600., 20860., 21120., 21380., 21640., 16298., 16496.,
      16694., 16892., 11306., 11440., 11574., 11708., 5876.,  5944.,  6012.,
      6080.,  2673.,  2706.,  2739.,  2772.,  5559.,  5626.,  5693.,  5760.,
      8662.,  8764.,  8866.,  8968.,  11986., 12124., 12262., 12400., 12538.,
      12676., 12814., 12952., 9757.,  9862.,  9967.,  10072., 6743.,  6814.,
      6885.,  6956.,  3492.,  3528.,  3564.,  3600.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9507.,    10209.,   10911.,   11613.,   15608.,   16592.,   17576.,
      18560.,   23335.,   24625.,   25915.,   27205.,   26785.,   28195.,
      29605.,   31015.,   30235.,   31765.,   33295.,   34825.,   33685.,
      35335.,   36985.,   38635.,   31352.,   32720.,   34088.,   35456.,
      26913.,   27975.,   29037.,   30099.,   26420.,   27740.,   29060.,
      30380.,   40800.,   42624.,   44448.,   46272.,   58180.,   60540.,
      62900.,   65260.,   64380.,   66900.,   69420.,   71940.,   70580.,
      73260.,   75940.,   78620.,   76780.,   79620.,   82460.,   85300.,
      68960.,   71296.,   73632.,   75968.,   57500.,   59300.,   61100.,
      62900.,   56605.,   58735.,   60865.,   62995.,   84520.,   87440.,
      90360.,   93280.,   117225.,  120975.,  124725.,  128475.,  126975.,
      130925.,  134875.,  138825.,  136725.,  140875.,  145025.,  149175.,
      146475.,  150825.,  155175.,  159525.,  128680.,  132240.,  135800.,
      139360.,  105295.,  108025.,  110755.,  113485.,  99565.,   102655.,
      105745.,  108835.,  144360.,  148560.,  152760.,  156960.,  195225.,
      200575.,  205925.,  211275.,  204975.,  210525.,  216075.,  221625.,
      214725.,  220475.,  226225.,  231975.,  224475.,  230425.,  236375.,
      242325.,  193640.,  198480.,  203320.,  208160.,  155935.,  159625.,
      163315.,  167005.,  142525.,  146575.,  150625.,  154675.,  204200.,
      209680.,  215160.,  220640.,  273225.,  280175.,  287125.,  294075.,
      282975.,  290125.,  297275.,  304425.,  292725.,  300075.,  307425.,
      314775.,  302475.,  310025.,  317575.,  325125.,  258600.,  264720.,
      270840.,  276960.,  206575.,  211225.,  215875.,  220525.,  178964.,
      182588.,  186212.,  189836.,  251616.,  256512.,  261408.,  266304.,
      330980.,  337180.,  343380.,  349580.,  340380.,  346740.,  353100.,
      359460.,  349780.,  356300.,  362820.,  369340.,  359180.,  365860.,
      372540.,  379220.,  302304.,  307712.,  313120.,  318528.,  238076.,
      242180.,  246284.,  250388.,  186771.,  189777.,  192783.,  195789.,
      260024.,  264080.,  268136.,  272192.,  338935.,  344065.,  349195.,
      354325.,  347185.,  352435.,  357685.,  362935.,  355435.,  360805.,
      366175.,  371545.,  363685.,  369175.,  374665.,  380155.,  303416.,
      307856.,  312296.,  316736.,  237009.,  240375.,  243741.,  247107.,
      109299.,  114033.,  118767.,  123501.,  159416.,  165776.,  172136.,
      178496.,  216535.,  224545.,  232555.,  240565.,  219985.,  228115.,
      236245.,  244375.,  223435.,  231685.,  239935.,  248185.,  226885.,
      235255.,  243625.,  251995.,  196664.,  203408.,  210152.,  216896.,
      158961.,  164055.,  169149.,  174243.,  213236.,  219932.,  226628.,
      233324.,  304224.,  313216.,  322208.,  331200.,  405380.,  416700.,
      428020.,  439340.,  411580.,  423060.,  434540.,  446020.,  417780.,
      429420.,  441060.,  452700.,  423980.,  435780.,  447580.,  459380.,
      361056.,  370560.,  380064.,  389568.,  287324.,  294500.,  301676.,
      308852.,  357325.,  366175.,  375025.,  383875.,  503400.,  515280.,
      527160.,  539040.,  663225.,  678175.,  693125.,  708075.,  672975.,
      688125.,  703275.,  718425.,  682725.,  698075.,  713425.,  728775.,
      692475.,  708025.,  723575.,  739125.,  583400.,  595920.,  608440.,
      620960.,  459775.,  469225.,  478675.,  488125.,  400285.,  410095.,
      419905.,  429715.,  563240.,  576400.,  589560.,  602720.,  741225.,
      757775.,  774325.,  790875.,  750975.,  767725.,  784475.,  801225.,
      760725.,  777675.,  794625.,  811575.,  770475.,  787625.,  804775.,
      821925.,  648360.,  662160.,  675960.,  689760.,  510415.,  520825.,
      531235.,  541645.,  443245.,  454015.,  464785.,  475555.,  623080.,
      637520.,  651960.,  666400.,  819225.,  837375.,  855525.,  873675.,
      828975.,  847325.,  865675.,  884025.,  838725.,  857275.,  875825.,
      894375.,  848475.,  867225.,  885975.,  904725.,  713320.,  728400.,
      743480.,  758560.,  561055.,  572425.,  583795.,  595165.,  473300.,
      482300.,  491300.,  500300.,  658400.,  670464.,  682528.,  694592.,
      857380.,  872540.,  887700.,  902860.,  866780.,  882100.,  897420.,
      912740.,  876180.,  891660.,  907140.,  922620.,  885580.,  901220.,
      916860.,  932500.,  737760.,  750336.,  762912.,  775488.,  575420.,
      584900.,  594380.,  603860.,  447843.,  454881.,  461919.,  468957.,
      618872.,  628304.,  637736.,  647168.,  800935.,  812785.,  824635.,
      836485.,  809185.,  821155.,  833125.,  845095.,  817435.,  829525.,
      841615.,  853705.,  825685.,  837895.,  850105.,  862315.,  683768.,
      693584.,  703400.,  713216.,  530337.,  537735.,  545133.,  552531.,
      209091.,  217857.,  226623.,  235389.,  303224.,  314960.,  326696.,
      338432.,  409735.,  424465.,  439195.,  453925.,  413185.,  428035.,
      442885.,  457735.,  416635.,  431605.,  446575.,  461545.,  420085.,
      435175.,  450265.,  465355.,  361976.,  374096.,  386216.,  398336.,
      291009.,  300135.,  309261.,  318387.,  400052.,  412124.,  424196.,
      436268.,  567648.,  583808.,  599968.,  616128.,  752580.,  772860.,
      793140.,  813420.,  758780.,  779220.,  799660.,  820100.,  764980.,
      785580.,  806180.,  826780.,  771180.,  791940.,  812700.,  833460.,
      653152.,  669824.,  686496.,  703168.,  517148.,  529700.,  542252.,
      554804.,  658045.,  673615.,  689185.,  704755.,  922280.,  943120.,
      963960.,  984800.,  1209225., 1235375., 1261525., 1287675., 1218975.,
      1245325., 1271675., 1298025., 1228725., 1255275., 1281825., 1308375.,
      1238475., 1265225., 1291975., 1318725., 1038120., 1059600., 1081080.,
      1102560., 814255.,  830425.,  846595.,  862765.,  701005.,  717535.,
      734065.,  750595.,  982120.,  1004240., 1026360., 1048480., 1287225.,
      1314975., 1342725., 1370475., 1296975., 1324925., 1352875., 1380825.,
      1306725., 1334875., 1363025., 1391175., 1316475., 1344825., 1373175.,
      1401525., 1103080., 1125840., 1148600., 1171360., 864895.,  882025.,
      899155.,  916285.,  743965.,  761455.,  778945.,  796435.,  1041960.,
      1065360., 1088760., 1112160., 1365225., 1394575., 1423925., 1453275.,
      1374975., 1404525., 1434075., 1463625., 1384725., 1414475., 1444225.,
      1473975., 1394475., 1424425., 1454375., 1484325., 1168040., 1192080.,
      1216120., 1240160., 915535.,  933625.,  951715.,  969805.,  767636.,
      782012.,  796388.,  810764.,  1065184., 1084416., 1103648., 1122880.,
      1383780., 1407900., 1432020., 1456140., 1393180., 1417460., 1441740.,
      1466020., 1402580., 1427020., 1451460., 1475900., 1411980., 1436580.,
      1461180., 1485780., 1173216., 1192960., 1212704., 1232448., 912764.,
      927620.,  942476.,  957332.,  708915.,  719985.,  731055.,  742125.,
      977720.,  992528.,  1007336., 1022144., 1262935., 1281505., 1300075.,
      1318645., 1271185., 1289875., 1308565., 1327255., 1279435., 1298245.,
      1317055., 1335865., 1287685., 1306615., 1325545., 1344475., 1064120.,
      1079312., 1094504., 1109696., 823665.,  835095.,  846525.,  857955.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,      11.,     17.,     23.,     40.,     60.,     80.,     100.,
      137.,    179.,    221.,    263.,    328.,    400.,    472.,    544.,
      616.,    688.,    760.,    832.,    779.,    845.,    911.,    977.,
      752.,    804.,    856.,    908.,    503.,    533.,    563.,    593.,
      154.,    198.,    242.,    286.,    656.,    760.,    864.,    968.,
      1570.,   1750.,   1930.,   2110.,   2960.,   3232.,   3504.,   3776.,
      4048.,   4320.,   4592.,   4864.,   4102.,   4330.,   4558.,   4786.,
      3488.,   3656.,   3824.,   3992.,   2142.,   2234.,   2326.,   2418.,
      1087.,   1201.,   1315.,   1429.,   3128.,   3380.,   3632.,   3884.,
      6219.,   6633.,   7047.,   7461.,   10456.,  11056.,  11656.,  12256.,
      12856.,  13456.,  14056.,  14656.,  11889.,  12375.,  12861.,  13347.,
      9488.,   9836.,   10184.,  10532.,  5557.,   5743.,   5929.,   6115.,
      3367.,   3481.,   3595.,   3709.,   8168.,   8420.,   8672.,   8924.,
      14499.,  14913.,  15327.,  15741.,  22456.,  23056.,  23656.,  24256.,
      24856.,  25456.,  26056.,  26656.,  21609.,  22095.,  22581.,  23067.,
      16448.,  16796.,  17144.,  17492.,  9277.,   9463.,   9649.,   9835.,
      5647.,   5761.,   5875.,   5989.,   13208.,  13460.,  13712.,  13964.,
      22779.,  23193.,  23607.,  24021.,  34456.,  35056.,  35656.,  36256.,
      36856.,  37456.,  38056.,  38656.,  31329.,  31815.,  32301.,  32787.,
      23408.,  23756.,  24104.,  24452.,  12997.,  13183.,  13369.,  13555.,
      7322.,   7430.,   7538.,   7646.,   16208.,  16440.,  16672.,  16904.,
      26722.,  27094.,  27466.,  27838.,  38928.,  39456.,  39984.,  40512.,
      41040.,  41568.,  42096.,  42624.,  33670.,  34090.,  34510.,  34930.,
      24416.,  24712.,  25008.,  25304.,  13214.,  13370.,  13526.,  13682.,
      5653.,   5723.,   5793.,   5863.,   12232.,  12380.,  12528.,  12676.,
      19769.,  20003.,  20237.,  20471.,  28296.,  28624.,  28952.,  29280.,
      29608.,  29936.,  30264.,  30592.,  23867.,  24125.,  24383.,  24641.,
      17040.,  17220.,  17400.,  17580.,  9095.,   9189.,   9283.,   9377.,
      77.,     179.,    281.,    383.,    568.,    780.,    992.,    1204.,
      1505.,   1835.,   2165.,   2495.,   2920.,   3376.,   3832.,   4288.,
      4744.,   5200.,   5656.,   6112.,   4451.,   4805.,   5159.,   5513.,
      3584.,   3828.,   4072.,   4316.,   2111.,   2237.,   2363.,   2489.,
      2218.,   2454.,   2690.,   2926.,   5552.,   6040.,   6528.,   7016.,
      10066.,  10822.,  11578.,  12334.,  15824.,  16864.,  17904.,  18944.,
      19984.,  21024.,  22064.,  23104.,  17206.,  18010.,  18814.,  19618.,
      12992.,  13544.,  14096.,  14648.,  7278.,   7562.,   7846.,   8130.,
      7063.,   7465.,   7867.,   8269.,   16232.,  17060.,  17888.,  18716.,
      27603.,  28881.,  30159.,  31437.,  41272.,  43024.,  44776.,  46528.,
      48280.,  50032.,  51784.,  53536.,  40185.,  41535.,  42885.,  44235.,
      29504.,  30428.,  31352.,  32276.,  16141.,  16615.,  17089.,  17563.,
      15103.,  15505.,  15907.,  16309.,  32792.,  33620.,  34448.,  35276.,
      53163.,  54441.,  55719.,  56997.,  76312.,  78064.,  79816.,  81568.,
      83320.,  85072.,  86824.,  88576.,  67185.,  68535.,  69885.,  71235.,
      47984.,  48908.,  49832.,  50756.,  25621.,  26095.,  26569.,  27043.,
      23143.,  23545.,  23947.,  24349.,  49352.,  50180.,  51008.,  51836.,
      78723.,  80001.,  81279.,  82557.,  111352., 113104., 114856., 116608.,
      118360., 120112., 121864., 123616., 94185.,  95535.,  96885.,  98235.,
      66464.,  67388.,  68312.,  69236.,  35101.,  35575.,  36049.,  36523.,
      20906.,  21206.,  21506.,  21806.,  44144.,  44760.,  45376.,  45992.,
      69778.,  70726.,  71674.,  72622.,  97872.,  99168.,  100464., 101760.,
      103056., 104352., 105648., 106944., 81334.,  82330.,  83326.,  84322.,
      56960.,  57640.,  58320.,  59000.,  29870.,  30218.,  30566.,  30914.,
      13405.,  13571.,  13737.,  13903.,  28120.,  28460.,  28800.,  29140.,
      44177.,  44699.,  45221.,  45743.,  61608.,  62320.,  63032.,  63744.,
      64456.,  65168.,  65880.,  66592.,  50579.,  51125.,  51671.,  52217.,
      35232.,  35604.,  35976.,  36348.,  18383.,  18573.,  18763.,  18953.,
      149.,    347.,    545.,    743.,    1096.,   1500.,   1904.,   2308.,
      2873.,   3491.,   4109.,   4727.,   5512.,   6352.,   7192.,   8032.,
      8872.,   9712.,   10552.,  11392.,  8123.,   8765.,   9407.,   10049.,
      6416.,   6852.,   7288.,   7724.,   3719.,   3941.,   4163.,   4385.,
      4282.,   4710.,   5138.,   5566.,   10448.,  11320.,  12192.,  13064.,
      18562.,  19894.,  21226.,  22558.,  28688.,  30496.,  32304.,  34112.,
      35920.,  37728.,  39536.,  41344.,  30310.,  31690.,  33070.,  34450.,
      22496.,  23432.,  24368.,  25304.,  12414.,  12890.,  13366.,  13842.,
      13039.,  13729.,  14419.,  15109.,  29336.,  30740.,  32144.,  33548.,
      48987.,  51129.,  53271.,  55413.,  72088.,  74992.,  77896.,  80800.,
      83704.,  86608.,  89512.,  92416.,  68481.,  70695.,  72909.,  75123.,
      49520.,  51020.,  52520.,  54020.,  26725.,  27487.,  28249.,  29011.,
      26839.,  27529.,  28219.,  28909.,  57416.,  58820.,  60224.,  61628.,
      91827.,  93969.,  96111.,  98253.,  130168., 133072., 135976., 138880.,
      141784., 144688., 147592., 150496., 112761., 114975., 117189., 119403.,
      79520.,  81020.,  82520.,  84020.,  41965.,  42727.,  43489.,  44251.,
      40639.,  41329.,  42019.,  42709.,  85496.,  86900.,  88304.,  89708.,
      134667., 136809., 138951., 141093., 188248., 191152., 194056., 196960.,
      199864., 202768., 205672., 208576., 157041., 159255., 161469., 163683.,
      109520., 111020., 112520., 114020., 57205.,  57967.,  58729.,  59491.,
      34490.,  34982.,  35474.,  35966.,  72080.,  73080.,  74080.,  75080.,
      112834., 114358., 115882., 117406., 156816., 158880., 160944., 163008.,
      165072., 167136., 169200., 171264., 128998., 130570., 132142., 133714.,
      89504.,  90568.,  91632.,  92696.,  46526.,  47066.,  47606.,  48146.,
      21157.,  21419.,  21681.,  21943.,  44008.,  44540.,  45072.,  45604.,
      68585.,  69395.,  70205.,  71015.,  94920.,  96016.,  97112.,  98208.,
      99304.,  100400., 101496., 102592., 77291.,  78125.,  78959.,  79793.,
      53424.,  53988.,  54552.,  55116.,  27671.,  27957.,  28243.,  28529.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      73590.,    79134.,    84678.,    90222.,    121336.,   129112.,
      136888.,   144664.,   181970.,   192170.,   202370.,   212570.,
      209450.,   220610.,   231770.,   242930.,   236930.,   249050.,
      261170.,   273290.,   264410.,   277490.,   290570.,   303650.,
      246520.,   257368.,   268216.,   279064.,   211902.,   220326.,
      228750.,   237174.,   206728.,   217192.,   227656.,   238120.,
      319904.,   334368.,   348832.,   363296.,   456920.,   475640.,
      494360.,   513080.,   506360.,   526360.,   546360.,   566360.,
      555800.,   577080.,   598360.,   619640.,   605240.,   627800.,
      650360.,   672920.,   544160.,   562720.,   581280.,   599840.,
      454120.,   468424.,   482728.,   497032.,   445370.,   462290.,
      479210.,   496130.,   665800.,   689000.,   712200.,   735400.,
      924350.,   954150.,   983950.,   1013750.,  1002150.,  1033550.,
      1064950.,  1096350.,  1079950.,  1112950.,  1145950.,  1178950.,
      1157750.,  1192350.,  1226950.,  1261550.,  1017800.,  1046120.,
      1074440.,  1102760.,  833330.,   855050.,   876770.,   898490.,
      788090.,   812690.,   837290.,   861890.,   1143240.,  1176680.,
      1210120.,  1243560.,  1546750.,  1589350.,  1631950.,  1674550.,
      1624550.,  1668750.,  1712950.,  1757150.,  1702350.,  1748150.,
      1793950.,  1839750.,  1780150.,  1827550.,  1874950.,  1922350.,
      1536200.,  1574760.,  1613320.,  1651880.,  1237490.,  1266890.,
      1296290.,  1325690.,  1130810.,  1163090.,  1195370.,  1227650.,
      1620680.,  1664360.,  1708040.,  1751720.,  2169150.,  2224550.,
      2279950.,  2335350.,  2246950.,  2303950.,  2360950.,  2417950.,
      2324750.,  2383350.,  2441950.,  2500550.,  2402550.,  2462750.,
      2522950.,  2583150.,  2054600.,  2103400.,  2152200.,  2201000.,
      1641650.,  1678730.,  1715810.,  1752890.,  1422856.,  1451752.,
      1480648.,  1509544.,  2000800.,  2039840.,  2078880.,  2117920.,
      2632280.,  2681720.,  2731160.,  2780600.,  2707320.,  2758040.,
      2808760.,  2859480.,  2782360.,  2834360.,  2886360.,  2938360.,
      2857400.,  2910680.,  2963960.,  3017240.,  2405280.,  2448416.,
      2491552.,  2534688.,  1894504.,  1927240.,  1959976.,  1992712.,
      1486518.,  1510494.,  1534470.,  1558446.,  2069752.,  2102104.,
      2134456.,  2166808.,  2698130.,  2739050.,  2779970.,  2820890.,
      2764010.,  2805890.,  2847770.,  2889650.,  2829890.,  2872730.,
      2915570.,  2958410.,  2895770.,  2939570.,  2983370.,  3027170.,
      2416120.,  2451544.,  2486968.,  2522392.,  1887486.,  1914342.,
      1941198.,  1968054.,  867894.,   905694.,   943494.,   981294.,
      1266424.,  1317208.,  1367992.,  1418776.,  1720850.,  1784810.,
      1848770.,  1912730.,  1748330.,  1813250.,  1878170.,  1943090.,
      1775810.,  1841690.,  1907570.,  1973450.,  1803290.,  1870130.,
      1936970.,  2003810.,  1563640.,  1617496.,  1671352.,  1725208.,
      1264254.,  1304934.,  1345614.,  1386294.,  1695880.,  1749352.,
      1802824.,  1856296.,  2420128.,  2491936.,  2563744.,  2635552.,
      3225560.,  3315960.,  3406360.,  3496760.,  3275000.,  3366680.,
      3458360.,  3550040.,  3324440.,  3417400.,  3510360.,  3603320.,
      3373880.,  3468120.,  3562360.,  3656600.,  2873760.,  2949664.,
      3025568.,  3101472.,  2287336.,  2344648.,  2401960.,  2459272.,
      2844410.,  2915090.,  2985770.,  3056450.,  4007880.,  4102760.,
      4197640.,  4292520.,  5281150.,  5400550.,  5519950.,  5639350.,
      5358950.,  5479950.,  5600950.,  5721950.,  5436750.,  5559350.,
      5681950.,  5804550.,  5514550.,  5638750.,  5762950.,  5887150.,
      4646600.,  4746600.,  4846600.,  4946600.,  3662450.,  3737930.,
      3813410.,  3888890.,  3187130.,  3265490.,  3343850.,  3422210.,
      4485320.,  4590440.,  4695560.,  4800680.,  5903550.,  6035750.,
      6167950.,  6300150.,  5981350.,  6115150.,  6248950.,  6382750.,
      6059150.,  6194550.,  6329950.,  6465350.,  6136950.,  6273950.,
      6410950.,  6547950.,  5165000.,  5275240.,  5385480.,  5495720.,
      4066610.,  4149770.,  4232930.,  4316090.,  3529850.,  3615890.,
      3701930.,  3787970.,  4962760.,  5078120.,  5193480.,  5308840.,
      6525950.,  6670950.,  6815950.,  6960950.,  6603750.,  6750350.,
      6896950.,  7043550.,  6681550.,  6829750.,  6977950.,  7126150.,
      6759350.,  6909150.,  7058950.,  7208750.,  5683400.,  5803880.,
      5924360.,  6044840.,  4470770.,  4561610.,  4652450.,  4743290.,
      3772168.,  3844072.,  3915976.,  3987880.,  5247904.,  5344288.,
      5440672.,  5537056.,  6834520.,  6955640.,  7076760.,  7197880.,
      6909560.,  7031960.,  7154360.,  7276760.,  6984600.,  7108280.,
      7231960.,  7355640.,  7059640.,  7184600.,  7309560.,  7434520.,
      5881760.,  5982240.,  6082720.,  6183200.,  4587880.,  4663624.,
      4739368.,  4815112.,  3571062.,  3627294.,  3683526.,  3739758.,
      4935160.,  5010520.,  5085880.,  5161240.,  6387410.,  6482090.,
      6576770.,  6671450.,  6453290.,  6548930.,  6644570.,  6740210.,
      6519170.,  6615770.,  6712370.,  6808970.,  6585050.,  6682610.,
      6780170.,  6877730.,  5453560.,  5531992.,  5610424.,  5688856.,
      4230078.,  4289190.,  4348302.,  4407414.,  1662198.,  1732254.,
      1802310.,  1872366.,  2411512.,  2505304.,  2599096.,  2692888.,
      3259730.,  3377450.,  3495170.,  3612890.,  3287210.,  3405890.,
      3524570.,  3643250.,  3314690.,  3434330.,  3553970.,  3673610.,
      3342170.,  3462770.,  3583370.,  3703970.,  2880760.,  2977624.,
      3074488.,  3171352.,  2316606.,  2389542.,  2462478.,  2535414.,
      3185032.,  3281512.,  3377992.,  3474472.,  4520352.,  4649504.,
      4778656.,  4907808.,  5994200.,  6156280.,  6318360.,  6480440.,
      6043640.,  6207000.,  6370360.,  6533720.,  6093080.,  6257720.,
      6422360.,  6587000.,  6142520.,  6308440.,  6474360.,  6640280.,
      5203360.,  5336608.,  5469856.,  5603104.,  4120552.,  4220872.,
      4321192.,  4421512.,  5243450.,  5367890.,  5492330.,  5616770.,
      7349960.,  7516520.,  7683080.,  7849640.,  9637950.,  9846950.,
      10055950., 10264950., 9715750.,  9926350.,  10136950., 10347550.,
      9793550.,  10005750., 10217950., 10430150., 9871350.,  10085150.,
      10298950., 10512750., 8275400.,  8447080.,  8618760.,  8790440.,
      6491570.,  6620810.,  6750050.,  6879290.,  5586170.,  5718290.,
      5850410.,  5982530.,  7827400.,  8004200.,  8181000.,  8357800.,
      10260350., 10482150., 10703950., 10925750., 10338150., 10561550.,
      10784950., 11008350., 10415950., 10640950., 10865950., 11090950.,
      10493750., 10720350., 10946950., 11173550., 8793800.,  8975720.,
      9157640.,  9339560.,  6895730.,  7032650.,  7169570.,  7306490.,
      5928890.,  6068690.,  6208490.,  6348290.,  8304840.,  8491880.,
      8678920.,  8865960.,  10882750., 11117350., 11351950., 11586550.,
      10960550., 11196750., 11432950., 11669150., 11038350., 11276150.,
      11513950., 11751750., 11116150., 11355550., 11594950., 11834350.,
      9312200.,  9504360.,  9696520.,  9888680.,  7299890.,  7444490.,
      7589090.,  7733690.,  6121480.,  6236392.,  6351304.,  6466216.,
      8495008.,  8648736.,  8802464.,  8956192.,  11036760., 11229560.,
      11422360., 11615160., 11111800., 11305880., 11499960., 11694040.,
      11186840., 11382200., 11577560., 11772920., 11261880., 11458520.,
      11655160., 11851800., 9358240.,  9516064.,  9673888.,  9831712.,
      7281256.,  7400008.,  7518760.,  7637512.,  5655606.,  5744094.,
      5832582.,  5921070.,  7800568.,  7918936.,  8037304.,  8155672.,
      10076690., 10225130., 10373570., 10522010., 10142570., 10291970.,
      10441370., 10590770., 10208450., 10358810., 10509170., 10659530.,
      10274330., 10425650., 10576970., 10728290., 8491000.,  8612440.,
      8733880.,  8855320.,  6572670.,  6664038.,  6755406.,  6846774.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,      70.,      110.,     150.,     260.,     404.,     548.,
      692.,     946.,     1258.,    1570.,    1882.,    2344.,    2888.,
      3432.,    3976.,    4520.,    5064.,    5608.,    6152.,    5866.,
      6370.,    6874.,    7378.,    5732.,    6132.,    6532.,    6932.,
      3862.,    4094.,    4326.,    4558.,    1020.,    1356.,    1692.,
      2028.,    4744.,    5544.,    6344.,    7144.,    11684.,   13076.,
      14468.,   15860.,   22352.,   24464.,   26576.,   28688.,   30800.,
      32912.,   35024.,   37136.,   31508.,   33284.,   35060.,   36836.,
      26952.,   28264.,   29576.,   30888.,   16620.,   17340.,   18060.,
      18780.,   8090.,    8978.,    9866.,    10754.,   23692.,   25660.,
      27628.,   29596.,   47574.,   50814.,   54054.,   57294.,   80504.,
      85208.,   89912.,   94616.,   99320.,   104024.,  108728.,  113432.,
      92286.,   96102.,   99918.,   103734.,  73900.,   76636.,   79372.,
      82108.,   43394.,   44858.,   46322.,   47786.,   25850.,   26738.,
      27626.,   28514.,   63052.,   65020.,   66988.,   68956.,   112374.,
      115614.,  118854.,  122094.,  174584.,  179288.,  183992.,  188696.,
      193400.,  198104.,  202808.,  207512.,  168606.,  172422.,  176238.,
      180054.,  128620.,  131356.,  134092.,  136828.,  72674.,   74138.,
      75602.,   77066.,   43610.,   44498.,   45386.,   46274.,   102412.,
      104380.,  106348.,  108316.,  177174.,  180414.,  183654.,  186894.,
      268664.,  273368.,  278072.,  282776.,  287480.,  292184.,  296888.,
      301592.,  244926.,  248742.,  252558.,  256374.,  183340.,  186076.,
      188812.,  191548.,  101954.,  103418.,  104882.,  106346.,  57340.,
      58188.,   59036.,   59884.,   127112.,  128936.,  130760.,  132584.,
      209828.,  212756.,  215684.,  218612.,  306000.,  310160.,  314320.,
      318480.,  322640.,  326800.,  330960.,  335120.,  264980.,  268292.,
      271604.,  274916.,  192328.,  194664.,  197000.,  199336.,  104172.,
      105404.,  106636.,  107868.,  44510.,   45062.,   45614.,   46166.,
      96388.,   97556.,   98724.,   99892.,   155890.,  157738.,  159586.,
      161434.,  223272.,  225864.,  228456.,  231048.,  233640.,  236232.,
      238824.,  241416.,  188458.,  190498.,  192538.,  194578.,  134628.,
      136052.,  137476.,  138900.,  71894.,   72638.,   73382.,   74126.,
      510.,     1318.,    2126.,    2934.,    4292.,    5972.,    7652.,
      9332.,    11602.,   14218.,   16834.,   19450.,   22696.,   26312.,
      29928.,   33544.,   37160.,   40776.,   44392.,   48008.,   34954.,
      37762.,   40570.,   43378.,   28196.,   30132.,   32068.,   34004.,
      16630.,   17630.,   18630.,   19630.,   17340.,   19212.,   21084.,
      22956.,   43528.,   47400.,   51272.,   55144.,   79076.,   85076.,
      91076.,   97076.,   124496.,  132752.,  141008.,  149264.,  157520.,
      165776.,  174032.,  182288.,  135764.,  142148.,  148532.,  154916.,
      102600.,  106984.,  111368.,  115752.,  57516.,   59772.,   62028.,
      64284.,   55610.,   58802.,   61994.,   65186.,   127948.,  134524.,
      141100.,  147676.,  217782.,  227934.,  238086.,  248238.,  325880.,
      339800.,  353720.,  367640.,  381560.,  395480.,  409400.,  423320.,
      317790.,  328518.,  339246.,  349974.,  233452.,  240796.,  248140.,
      255484.,  127778.,  131546.,  135314.,  139082.,  119450.,  122642.,
      125834.,  129026.,  259468.,  266044.,  272620.,  279196.,  420822.,
      430974.,  441126.,  451278.,  604280.,  618200.,  632120.,  646040.,
      659960.,  673880.,  687800.,  701720.,  532350.,  543078.,  553806.,
      564534.,  380332.,  387676.,  395020.,  402364.,  203138.,  206906.,
      210674.,  214442.,  183290.,  186482.,  189674.,  192866.,  390988.,
      397564.,  404140.,  410716.,  623862.,  634014.,  644166.,  654318.,
      882680.,  896600.,  910520.,  924440.,  938360.,  952280.,  966200.,
      980120.,  746910.,  757638.,  768366.,  779094.,  527212.,  534556.,
      541900.,  549244.,  278498.,  282266.,  286034.,  289802.,  165820.,
      168204.,  170588.,  172972.,  350216.,  355112.,  360008.,  364904.,
      553700.,  561236.,  568772.,  576308.,  776784.,  787088.,  797392.,
      807696.,  818000.,  828304.,  838608.,  848912.,  645716.,  653636.,
      661556.,  669476.,  452296.,  457704.,  463112.,  468520.,  237228.,
      239996.,  242764.,  245532.,  106430.,  107750.,  109070.,  110390.,
      223300.,  226004.,  228708.,  231412.,  350866.,  355018.,  359170.,
      363322.,  489384.,  495048.,  500712.,  506376.,  512040.,  517704.,
      523368.,  529032.,  401866.,  406210.,  410554.,  414898.,  279972.,
      282932.,  285892.,  288852.,  146102.,  147614.,  149126.,  150638.,
      990.,     2566.,    4142.,    5718.,    8324.,    11540.,   14756.,
      17972.,   22258.,   27178.,   32098.,   37018.,   43048.,   49736.,
      56424.,   63112.,   69800.,   76488.,   83176.,   89864.,   64042.,
      69154.,   74266.,   79378.,   50660.,   54132.,   57604.,   61076.,
      29398.,   31166.,   32934.,   34702.,   33660.,   37068.,   40476.,
      43884.,   82312.,   89256.,   96200.,   103144.,  146468.,  157076.,
      167684.,  178292.,  226640.,  241040.,  255440.,  269840.,  284240.,
      298640.,  313040.,  327440.,  240020.,  251012.,  262004.,  272996.,
      178248.,  185704.,  193160.,  200616.,  98412.,   102204.,  105996.,
      109788.,  103130.,  108626.,  114122.,  119618.,  232204.,  243388.,
      254572.,  265756.,  387990.,  405054.,  422118.,  439182.,  571256.,
      594392.,  617528.,  640664.,  663800.,  686936.,  710072.,  733208.,
      543294.,  560934.,  578574.,  596214.,  393004.,  404956.,  416908.,
      428860.,  212162.,  218234.,  224306.,  230378.,  213050.,  218546.,
      224042.,  229538.,  455884.,  467068.,  478252.,  489436.,  729270.,
      746334.,  763398.,  780462.,  1033976., 1057112., 1080248., 1103384.,
      1126520., 1149656., 1172792., 1195928., 896094.,  913734.,  931374.,
      949014.,  632044.,  643996.,  655948.,  667900.,  333602.,  339674.,
      345746.,  351818.,  322970.,  328466.,  333962.,  339458.,  679564.,
      690748.,  701932.,  713116.,  1070550., 1087614., 1104678., 1121742.,
      1496696., 1519832., 1542968., 1566104., 1589240., 1612376., 1635512.,
      1658648., 1248894., 1266534., 1284174., 1301814., 871084.,  883036.,
      894988.,  906940.,  455042.,  461114.,  467186.,  473258.,  274300.,
      278220.,  282140.,  286060.,  573320.,  581288.,  589256.,  597224.,
      897572.,  909716.,  921860.,  934004.,  1247568., 1264016., 1280464.,
      1296912., 1313360., 1329808., 1346256., 1362704., 1026452., 1038980.,
      1051508., 1064036., 712264.,  720744.,  729224.,  737704.,  370284.,
      374588.,  378892.,  383196.,  168350.,  170438.,  172526.,  174614.,
      350212.,  354452.,  358692.,  362932.,  545842.,  552298.,  558754.,
      565210.,  755496.,  764232.,  772968.,  781704.,  790440.,  799176.,
      807912.,  816648.,  615274.,  621922.,  628570.,  635218.,  425316.,
      429812.,  434308.,  438804.,  220310.,  222590.,  224870.,  227150.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      318.,   510.,   750.,   870.,   816.,   705.,   796.,   1220.,  1730.,
      1940.,  1756.,  1474.,  1610.,  2400.,  3325.,  3650.,  3230.,  2660.,
      2690.,  3900.,  5275.,  5600.,  4850.,  3920.,  3770.,  5400.,  7225.,
      7550.,  6470.,  5180.,  4850.,  6900.,  9175.,  9500.,  8090.,  6440.,
      5632.,  7900.,  10370., 10680., 8980.,  7066.,  5628.,  7830.,  10200.,
      10470., 8736.,  6825.,  3342.,  4830.,  6510.,  6630.,  5712.,  4593.,
      6268.,  8900.,  11810., 12020., 10204., 8098.,  10250., 14400., 18925.,
      19250., 16190., 12740., 11330., 15900., 20875., 21200., 17810., 14000.,
      12410., 17400., 22825., 23150., 19430., 15260., 13490., 18900., 24775.,
      25100., 21050., 16520., 13984., 19420., 25250., 25560., 21268., 16570.,
      12972., 17910., 23160., 23430., 19392., 15033., 6366.,  9150.,  12270.,
      12390., 10608., 8481.,  11740., 16580., 21890., 22100., 18652., 14722.,
      18890., 26400., 34525., 34850., 29150., 22820., 19970., 27900., 36475.,
      36800., 30770., 24080., 21050., 29400., 38425., 38750., 32390., 25340.,
      22130., 30900., 40375., 40700., 34010., 26600., 22336., 30940., 40130.,
      40440., 33556., 26074., 20316., 27990., 36120., 36390., 30048., 23241.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    7.,    10.,   13.,   10.,   9.,    29.,   39.,   49.,
      59.,   40.,   34.,   95.,   116.,  137.,  158.,  100.,  86.,   222.,
      258.,  294.,  330.,  200.,  166.,  402.,  438.,  474.,  510.,  300.,
      220.,  503.,  536.,  569.,  602.,  340.,  217.,  483.,  509.,  535.,
      561.,  310.,  147.,  322.,  337.,  352.,  367.,  200.,  9.,    28.,
      47.,   66.,   85.,   50.,   65.,   157.,  199.,  241.,  283.,  160.,
      178.,  407.,  476.,  545.,  614.,  340.,  358.,  798.,  898.,  998.,
      1098., 600.,  598.,  1298., 1398., 1498., 1598., 860.,  604.,  1295.,
      1376., 1457., 1538., 820.,  513.,  1091., 1149., 1207., 1265., 670.,
      315.,  666.,  697.,  728.,  759.,  400.,  17.,   52.,   87.,   122.,
      157.,  90.,   121.,  285.,  359.,  433.,  507.,  280.,  322.,  719.,
      836.,  953.,  1070., 580.,  630.,  1374., 1538., 1702., 1866., 1000.,
      1030., 2194., 2358., 2522., 2686., 1420., 988.,  2087., 2216., 2345.,
      2474., 1300., 809.,  1699., 1789., 1879., 1969., 1030., 483.,  1010.,
      1057., 1104., 1151., 600.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2283.,   3708.,   5505.,   6435.,   6084.,   5289.,   5888.,   9088.,
      12960.,  14600.,  13280.,  11192.,  12115.,  18140.,  25225.,  27775.,
      24660.,  20365.,  20575.,  29900.,  40525.,  43075.,  37380.,  30265.,
      29035.,  41660.,  55825.,  58375.,  50100.,  40165.,  37495.,  53420.,
      71125.,  73675.,  62820.,  50065.,  43880.,  61600.,  80920.,  83360.,
      70144.,  55232.,  44043.,  61308.,  79905.,  82035.,  68484.,  53529.,
      25611.,  37116.,  50145.,  51075.,  44100.,  35529.,  48512.,  68992.,
      91680.,  93320.,  79328.,  63032.,  79795.,  112220., 147625., 150175.,
      126420., 99565.,  88255.,  123980., 162925., 165475., 139140., 109465.,
      96715.,  135740., 178225., 180775., 151860., 119365., 105175., 147500.,
      193525., 196075., 164580., 129265., 109544., 152224., 198040., 200480.,
      166912., 130112., 101931., 140796., 182145., 184275., 152580., 118329.,
      48939.,  70524.,  94785.,  95715.,  82116.,  65769.,  91136.,  128896.,
      170400., 172040., 145376., 114872., 147475., 206300., 270025., 272575.,
      228180., 178765., 155935., 218060., 285325., 287875., 240900., 188665.,
      164395., 229820., 300625., 303175., 253620., 198565., 172855., 241580.,
      315925., 318475., 266340., 208465., 175208., 242848., 315160., 317600.,
      263680., 204992., 159819., 220284., 284385., 286515., 236676., 183129.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     22.,    42.,    62.,    82.,    67.,    52.,    184.,   256.,
      328.,   400.,   280.,   221.,   646.,   802.,   958.,   1114.,  719.,
      592.,   1568.,  1840.,  2112.,  2384.,  1464.,  1192.,  2928.,  3200.,
      3472.,  3744.,  2224.,  1637.,  3766.,  4018.,  4270.,  4522.,  2567.,
      1640.,  3664.,  3864.,  4064.,  4264.,  2364.,  1121.,  2462.,  2578.,
      2694.,  2810.,  1535.,  53.,    182.,   330.,   478.,   626.,   371.,
      468.,   1144.,  1472.,  1800.,  2128.,  1208.,  1325.,  3046.,  3586.,
      4126.,  4666.,  2591.,  2704.,  6048.,  6832.,  7616.,  8400.,  4600.,
      4584.,  9968.,  10752., 11536., 12320., 6640.,  4661.,  10006., 10642.,
      11278., 11914., 6359.,  3976.,  8464.,  8920.,  9376.,  9832.,  5212.,
      2449.,  5182.,  5426.,  5670.,  5914.,  3119.,  101.,   342.,   618.,
      894.,   1170.,  675.,   884.,   2104.,  2688.,  3272.,  3856.,  2136.,
      2429.,  5446.,  6370.,  7294.,  8218.,  4463.,  4816.,  10528., 11824.,
      13120., 14416., 7736.,  7976.,  17008., 18304., 19600., 20896., 11056.,
      7685.,  16246., 17266., 18286., 19306., 10151., 6312.,  13264., 13976.,
      14688., 15400., 8060.,  3777.,  7902.,  8274.,  8646.,  9018.,  4703.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17238.,   28200.,   42090.,   49410.,   46920.,   40926.,   45208.,
      70048.,   100200.,  113160.,  103200.,  87160.,   93890.,   140920.,
      196350.,  216550.,  192600.,  159290.,  160850.,  234040.,  317550.,
      337750.,  293400.,  237770.,  227810.,  327160.,  438750.,  458950.,
      394200.,  316250.,  294770.,  420280.,  559950.,  580150.,  495000.,
      394730.,  346360.,  486432.,  639240.,  658600.,  554400.,  436696.,
      348438.,  485160.,  632490.,  649410.,  542280.,  423966.,  200406.,
      290856.,  393450.,  400770.,  346440.,  279390.,  381592.,  543136.,
      722280.,  735240.,  625440.,  497272.,  629570.,  885880.,  1165950.,
      1186150., 999000.,  787130.,  696530.,  979000.,  1287150., 1307350.,
      1099800., 865610.,  763490.,  1072120., 1408350., 1428550., 1200600.,
      944090.,  830450.,  1165240., 1529550., 1549750., 1301400., 1022570.,
      867064.,  1205280., 1568520., 1587880., 1322400., 1031128., 808086.,
      1116456., 1444650., 1461570., 1210440., 938910.,  383574.,  553512.,
      744810.,  752130.,  645960.,  517854.,  717976.,  1016224., 1344360.,
      1357320., 1147680., 907384.,  1165250., 1630840., 2135550., 2155750.,
      1805400., 1414970., 1232210., 1723960., 2256750., 2276950., 1906200.,
      1493450., 1299170., 1817080., 2377950., 2398150., 2007000., 1571930.,
      1366130., 1910200., 2499150., 2519350., 2107800., 1650410., 1387768.,
      1924128., 2497800., 2517160., 2090400., 1625560., 1267734., 1747752.,
      2256810., 2273730., 1878600., 1453854.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     140.,    284.,    428.,    572.,    486.,    340.,    1288.,
      1832.,   2376.,   2920.,   2084.,   1570.,   4724.,   5924.,   7124.,
      8324.,   5434.,   4360.,   11728.,  13840.,  15952.,  18064.,  11176.,
      9000.,   22288.,  24400.,  26512.,  28624.,  17096.,  12610.,  29108.,
      31076.,  33044.,  35012.,  19930.,  12740.,  28520.,  30088.,  31656.,
      33224.,  18452.,  8750.,   19244.,  20156.,  21068.,  21980.,  12022.,
      350.,    1292.,   2460.,   3628.,   4796.,   2854.,   3540.,   8712.,
      11304.,  13896.,  16488.,  9380.,   10210.,  23540.,  27812.,  32084.,
      36356.,  20218.,  21000.,  47056.,  53264.,  59472.,  65680.,  36008.,
      35880.,  78096.,  84304.,  90512.,  96720.,  52168.,  36610.,  78644.,
      83684.,  88724.,  93764.,  50074.,  31300.,  66664.,  70280.,  73896.,
      77512.,  41108.,  19310.,  40876.,  42812.,  44748.,  46684.,  24630.,
      670.,    2444.,   4636.,   6828.,   9020.,   5222.,   6740.,   16136.,
      20776.,  25416.,  30056.,  16676.,  18850.,  42356.,  49700.,  57044.,
      64388.,  35002.,  37640.,  82384.,  92688.,  102992., 113296., 60840.,
      62760.,  133904., 144208., 154512., 164816., 87240.,  60610.,  128180.,
      136292., 144404., 152516., 80218.,  49860.,  104808., 110472., 116136.,
      121800., 63764.,  29870.,  62508.,  65468.,  68428.,  71388.,  37238.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      564.,   636.,   918.,   1020.,  1365.,  1500.,  1590.,  1740.,  1506.,
      1632.,  1311.,  1410.,  1460.,  1592.,  2256.,  2440.,  3220.,  3460.,
      3620.,  3880.,  3296.,  3512.,  2780.,  2948.,  3010.,  3220.,  4510.,
      4800.,  6275.,  6650.,  6900.,  7300.,  6130.,  6460.,  5065.,  5320.,
      5080.,  5380.,  7390.,  7800.,  10025., 10550., 10650., 11200., 9250.,
      9700.,  7495.,  7840.,  7150.,  7540.,  10270., 10800., 13775., 14450.,
      14400., 15100., 12370., 12940., 9925.,  10360., 9220.,  9700.,  13150.,
      13800., 17525., 18350., 18150., 19000., 15490., 16180., 12355., 12880.,
      10844., 11264., 15232., 15800., 20020., 20740., 20620., 21360., 17360.,
      17960., 13676., 14132., 10914., 11256., 15198., 15660., 19815., 20400.,
      20340., 20940., 16986., 17472., 13281., 13650., 6180.,  6684.,  8982.,
      9660.,  12165., 13020., 12390., 13260., 10722., 11424., 8655.,  9186.,
      11828., 12536., 16848., 17800., 22420., 23620., 22820., 24040., 19424.,
      20408., 15452., 16196., 19570., 20500., 27550., 28800., 36275., 37850.,
      36900., 38500., 31090., 32380., 24505., 25480., 21640., 22660., 30430.,
      31800., 40025., 41750., 40650., 42400., 34210., 35620., 26935., 28000.,
      23710., 24820., 33310., 34800., 43775., 45650., 44400., 46300., 37330.,
      38860., 29365., 30520., 25780., 26980., 36190., 37800., 47525., 49550.,
      48150., 50200., 40450., 42100., 31795., 33040., 26972., 27968., 37504.,
      38840., 48820., 50500., 49420., 51120., 41168., 42536., 32108., 33140.,
      25170., 25944., 34782., 35820., 45015., 46320., 45540., 46860., 37722.,
      38784., 29265., 30066., 11796., 12732., 17046., 18300., 22965., 24540.,
      23190., 24780., 19938., 21216., 15999., 16962., 22196., 23480., 31440.,
      33160., 41620., 43780., 42020., 44200., 35552., 37304., 28124., 29444.,
      36130., 37780., 50590., 52800., 66275., 69050., 66900., 69700., 56050.,
      58300., 43945., 45640., 38200., 39940., 53470., 55800., 70025., 72950.,
      70650., 73600., 59170., 61540., 46375., 48160., 40270., 42100., 56350.,
      58800., 73775., 76850., 74400., 77500., 62290., 64780., 48805., 50680.,
      42340., 44260., 59230., 61800., 77525., 80750., 78150., 81400., 65410.,
      68020., 51235., 53200., 43100., 44672., 59776., 61880., 77620., 80260.,
      78220., 80880., 64976., 67112., 50540., 52148., 39426., 40632., 54366.,
      55980., 70215., 72240., 70740., 72780., 58458., 60096., 45249., 46482.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    5.,    8.,    11.,   14.,   17.,   20.,   23.,   26.,
      18.,   20.,   14.,   18.,   48.,   58.,   68.,   78.,   88.,   98.,
      108.,  118.,  74.,   80.,   59.,   68.,   169.,  190.,  211.,  232.,
      253.,  274.,  295.,  316.,  188.,  200.,  156.,  172.,  408.,  444.,
      480.,  516.,  552.,  588.,  624.,  660.,  380.,  400.,  316.,  332.,
      768.,  804.,  840.,  876.,  912.,  948.,  984.,  1020., 580.,  600.,
      425.,  440.,  973.,  1006., 1039., 1072., 1105., 1138., 1171., 1204.,
      662.,  680.,  422.,  434.,  940.,  966.,  992.,  1018., 1044., 1070.,
      1096., 1122., 606.,  620.,  287.,  294.,  629.,  644.,  659.,  674.,
      689.,  704.,  719.,  734.,  392.,  400.,  9.,    18.,   37.,   56.,
      75.,   94.,   113.,  132.,  151.,  170.,  90.,   100.,  110.,  130.,
      272.,  314.,  356.,  398.,  440.,  482.,  524.,  566.,  298.,  320.,
      323.,  356.,  745.,  814.,  883.,  952.,  1021., 1090., 1159., 1228.,
      644.,  680.,  668.,  716.,  1496., 1596., 1696., 1796., 1896., 1996.,
      2096., 2196., 1148., 1200., 1148., 1196., 2496., 2596., 2696., 2796.,
      2896., 2996., 3096., 3196., 1668., 1720., 1169., 1208., 2509., 2590.,
      2671., 2752., 2833., 2914., 2995., 3076., 1598., 1640., 998.,  1026.,
      2124., 2182., 2240., 2298., 2356., 2414., 2472., 2530., 1310., 1340.,
      615.,  630.,  1301., 1332., 1363., 1394., 1425., 1456., 1487., 1518.,
      784.,  800.,  17.,   34.,   69.,   104.,  139.,  174.,  209.,  244.,
      279.,  314.,  162.,  180.,  206.,  242.,  496.,  570.,  644.,  718.,
      792.,  866.,  940.,  1014., 522.,  560.,  587.,  644.,  1321., 1438.,
      1555., 1672., 1789., 1906., 2023., 2140., 1100., 1160., 1180., 1260.,
      2584., 2748., 2912., 3076., 3240., 3404., 3568., 3732., 1916., 2000.,
      1980., 2060., 4224., 4388., 4552., 4716., 4880., 5044., 5208., 5372.,
      2756., 2840., 1913., 1976., 4045., 4174., 4303., 4432., 4561., 4690.,
      4819., 4948., 2534., 2600., 1574., 1618., 3308., 3398., 3488., 3578.,
      3668., 3758., 3848., 3938., 2014., 2060., 943.,  966.,  1973., 2020.,
      2067., 2114., 2161., 2208., 2255., 2302., 1176., 1200.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4143.,   4701.,   6816.,   7608.,   10215.,  11265.,  11985.,  13155.,
      11424.,  12408.,  9993.,   10767.,  10996.,  12028.,  17088.,  18528.,
      24500.,  26380.,  27660.,  29700.,  25280.,  26976.,  21388.,  22708.,
      22985.,  24635.,  34560.,  36840.,  48225.,  51175.,  53175.,  56325.,
      47360.,  49960.,  39215.,  41225.,  39365.,  41735.,  57360.,  60600.,
      77925.,  82075.,  82875.,  87225.,  72080.,  75640.,  58475.,  61205.,
      55745.,  58835.,  80160.,  84360.,  107625., 112975., 112575., 118125.,
      96800.,  101320., 77735.,  81185.,  72125.,  75935.,  102960., 108120.,
      137325., 143875., 142275., 149025., 121520., 127000., 96995.,  101165.,
      85252.,  88588.,  119808., 124320., 157540., 163260., 162300., 168180.,
      136704., 141472., 107740., 111364., 86043.,  88761.,  119856., 123528.,
      156315., 160965., 160485., 165255., 134064., 137928., 104853., 107787.,
      48207.,  52221.,  70176.,  75576.,  95175.,  101985., 96945.,  103875.,
      84000.,  89592.,  67881.,  72111.,  92788.,  98428.,  132288., 139872.,
      176180., 185740., 179340., 189060., 152768., 160608., 121612., 127540.,
      154025., 161435., 216960., 226920., 285825., 298375., 290775., 303525.,
      245120., 255400., 193295., 201065., 170405., 178535., 239760., 250680.,
      315525., 329275., 320475., 334425., 269840., 281080., 212555., 221045.,
      186785., 195635., 262560., 274440., 345225., 360175., 350175., 365325.,
      294560., 306760., 231815., 241025., 203165., 212735., 285360., 298200.,
      374925., 391075., 379875., 396225., 319280., 332440., 251075., 261005.,
      213124., 221068., 296448., 307104., 386020., 399420., 390780., 404340.,
      325632., 336544., 254044., 262276., 199227., 205401., 275376., 283656.,
      356475., 366885., 360645., 371175., 298800., 307272., 231861., 238251.,
      92271.,  99741.,  133536., 143544., 180135., 192705., 181905., 194595.,
      156576., 166776., 125769., 133455., 174580., 184828., 247488., 261216.,
      327860., 345100., 331020., 348420., 280256., 294240., 221836., 232372.,
      285065., 298235., 399360., 417000., 523425., 545575., 528375., 550725.,
      442880., 460840., 347375., 360905., 301445., 315335., 422160., 440760.,
      553125., 576475., 558075., 581625., 467600., 486520., 366635., 380885.,
      317825., 332435., 444960., 464520., 582825., 607375., 587775., 612525.,
      492320., 512200., 385895., 400865., 334205., 349535., 467760., 488280.,
      612525., 638275., 617475., 643425., 517040., 537880., 405155., 420845.,
      340996., 353548., 473088., 489888., 614500., 635580., 619260., 640500.,
      514560., 531616., 400348., 413188., 312411., 322041., 430896., 443784.,
      556635., 572805., 560805., 577095., 463536., 476616., 358869., 368715.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    68.,    88.,    108.,   128.,   148.,
      168.,   123.,   137.,   82.,    110.,   312.,   384.,   456.,   528.,
      600.,   672.,   744.,   816.,   526.,   570.,   391.,   457.,   1172.,
      1328.,  1484.,  1640.,  1796.,  1952.,  2108.,  2264.,  1369.,  1459.,
      1092.,  1212.,  2928.,  3200.,  3472.,  3744.,  4016.,  4288.,  4560.,
      4832.,  2812.,  2964.,  2292.,  2412.,  5648.,  5920.,  6192.,  6464.,
      6736.,  7008.,  7280.,  7552.,  4332.,  4484.,  3187.,  3301.,  7340.,
      7592.,  7844.,  8096.,  8348.,  8600.,  8852.,  9104.,  5029.,  5167.,
      3210.,  3302.,  7176.,  7376.,  7576.,  7776.,  7976.,  8176.,  8376.,
      8576.,  4646.,  4754.,  2201.,  2255.,  4836.,  4952.,  5068.,  5184.,
      5300.,  5416.,  5532.,  5648.,  3023.,  3085.,  53.,    123.,   252.,
      400.,   548.,   696.,   844.,   992.,   1140.,  1288.,  683.,   761.,
      818.,   974.,   2040.,  2368.,  2696.,  3024.,  3352.,  3680.,  4008.,
      4336.,  2286.,  2458.,  2455.,  2713.,  5684.,  6224.,  6764.,  7304.,
      7844.,  8384.,  8924.,  9464.,  4969.,  5251.,  5124.,  5500.,  11504.,
      12288., 13072., 13856., 14640., 15424., 16208., 16992., 8892.,  9300.,
      8884.,  9260.,  19344., 20128., 20912., 21696., 22480., 23264., 24048.,
      24832., 12972., 13380., 9091.,  9397.,  19532., 20168., 20804., 21440.,
      22076., 22712., 23348., 23984., 12469., 12799., 7786.,  8006.,  16584.,
      17040., 17496., 17952., 18408., 18864., 19320., 19776., 10246., 10482.,
      4809.,  4927.,  10180., 10424., 10668., 10912., 11156., 11400., 11644.,
      11888., 6143.,  6269.,  101.,   235.,   476.,   752.,   1028.,  1304.,
      1580.,  1856.,  2132.,  2408.,  1243.,  1385.,  1554.,  1838.,  3768.,
      4352.,  4936.,  5520.,  6104.,  6688.,  7272.,  7856.,  4046.,  4346.,
      4519.,  4969.,  10196., 11120., 12044., 12968., 13892., 14816., 15740.,
      16664., 8569.,  9043.,  9156.,  9788.,  20080., 21376., 22672., 23968.,
      25264., 26560., 27856., 29152., 14972., 15636., 15476., 16108., 33040.,
      34336., 35632., 36928., 38224., 39520., 40816., 42112., 21612., 22276.,
      14995., 15493., 31724., 32744., 33764., 34784., 35804., 36824., 37844.,
      38864., 19909., 20431., 12362., 12710., 25992., 26704., 27416., 28128.,
      28840., 29552., 30264., 30976., 15846., 16210., 7417.,  7599.,  15524.,
      15896., 16268., 16640., 17012., 17384., 17756., 18128., 9263.,  9453.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31686.,   36078.,   52440.,   58680.,   78930.,   87210.,   92970.,
      102210.,  88920.,   96696.,   77982.,   84102.,   85256.,   93416.,
      132896.,  144288.,  191000.,  205880.,  216120.,  232280.,  197920.,
      211360.,  167720.,  178184.,  179530.,  192610.,  270440.,  288520.,
      377950.,  401350.,  417350.,  442350.,  372200.,  392840.,  308530.,
      324490.,  309850.,  328690.,  451880.,  477640.,  614350.,  647350.,
      653750.,  688350.,  569000.,  597320.,  461890.,  483610.,  440170.,
      464770.,  633320.,  666760.,  850750.,  893350.,  890150.,  934350.,
      765800.,  801800.,  615250.,  642730.,  570490.,  600850.,  814760.,
      855880.,  1087150., 1139350., 1126550., 1180350., 962600.,  1006280.,
      768610.,  801850.,  676040.,  702632.,  950304.,  986272.,  1249880.,
      1295480., 1287800., 1334680., 1084960., 1122976., 855272.,  884168.,
      683286.,  704958.,  951960.,  981240.,  1241730., 1278810., 1274970.,
      1313010., 1065240., 1096056., 833262.,  856662.,  380742.,  412782.,
      554712.,  597816.,  752850.,  807210.,  766890.,  822210.,  664920.,
      709560.,  537630.,  571398.,  734984.,  780008.,  1048352., 1108896.,
      1396760., 1473080., 1421880., 1499480., 1211680., 1274272., 964904.,
      1012232., 1222090., 1281250., 1721960., 1801480., 2269150., 2369350.,
      2308550., 2410350., 1946600., 2028680., 1535410., 1597450., 1352410.,
      1417330., 1903400., 1990600., 2505550., 2615350., 2544950., 2656350.,
      2143400., 2233160., 1688770., 1756570., 1482730., 1553410., 2084840.,
      2179720., 2741950., 2861350., 2781350., 2902350., 2340200., 2437640.,
      1842130., 1915690., 1613050., 1689490., 2266280., 2368840., 2978350.,
      3107350., 3017750., 3148350., 2537000., 2642120., 1995490., 2074810.,
      1694408., 1757864., 2357280., 2442400., 3070040., 3177080., 3107960.,
      3216280., 2590240., 2677408., 2021096., 2086856., 1585302., 1634622.,
      2191512., 2257656., 2837250., 2920410., 2870490., 2954610., 2378520.,
      2446200., 1845870., 1896918., 729798.,  789486.,  1056984., 1136952.,
      1426770., 1527210., 1440810., 1542210., 1240920., 1322424., 997278.,
      1058694., 1384712., 1466600., 1963808., 2073504., 2602520., 2740280.,
      2627640., 2766680., 2225440., 2337184., 1762088., 1846280., 2264650.,
      2369890., 3173480., 3314440., 4160350., 4337350., 4199750., 4378350.,
      3521000., 3664520., 2762290., 2870410., 2394970., 2505970., 3354920.,
      3503560., 4396750., 4583350., 4436150., 4624350., 3717800., 3869000.,
      2915650., 3029530., 2525290., 2642050., 3536360., 3692680., 4633150.,
      4829350., 4672550., 4870350., 3914600., 4073480., 3069010., 3188650.,
      2655610., 2778130., 3717800., 3881800., 4869550., 5075350., 4908950.,
      5116350., 4111400., 4277960., 3222370., 3347770., 2712776., 2813096.,
      3764256., 3898528., 4890200., 5058680., 4928120., 5097880., 4095520.,
      4231840., 3186920., 3289544., 2487318., 2564286., 3431064., 3534072.,
      4432770., 4562010., 4466010., 4596210., 3691800., 3796344., 2858478.,
      2937174.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,    324.,    468.,    612.,    756.,    900.,
      1044.,   1188.,   902.,    1006.,   540.,    748.,    2216.,   2760.,
      3304.,   3848.,   4392.,   4936.,   5480.,   6024.,   3948.,   4284.,
      2810.,   3314.,   8668.,   9868.,   11068.,  12268.,  13468.,  14668.,
      15868.,  17068.,  10418.,  11114.,  8120.,   9048.,   22096.,  24208.,
      26320.,  28432.,  30544.,  32656.,  34768.,  36880.,  21592.,  22776.,
      17400.,  18328.,  43216.,  45328.,  47440.,  49552.,  51664.,  53776.,
      55888.,  58000.,  33432.,  34616.,  24650.,  25538.,  56956.,  58924.,
      60892.,  62860.,  64828.,  66796.,  68764.,  70732.,  39170.,  40250.,
      25020.,  25740.,  56040.,  57608.,  59176.,  60744.,  62312.,  63880.,
      65448.,  67016.,  36364.,  37212.,  17230.,  17654.,  37908.,  38820.,
      39732.,  40644.,  41556.,  42468.,  43380.,  44292.,  23734.,  24222.,
      350.,    902.,    1844.,   3012.,   4180.,   5348.,   6516.,   7684.,
      8852.,   10020.,  5318.,   5934.,   6300.,   7532.,   15784.,  18376.,
      20968.,  23560.,  26152.,  28744.,  31336.,  33928.,  17900.,  19260.,
      19130.,  21170.,  44380.,  48652.,  52924.,  57196.,  61468.,  65740.,
      70012.,  74284.,  39026.,  41258.,  40120.,  43096.,  90192.,  96400.,
      102608., 108816., 115024., 121232., 127440., 133648., 69976.,  73208.,
      69880.,  72856.,  152272., 158480., 164688., 170896., 177104., 183312.,
      189520., 195728., 102296., 105528., 71690.,  74114.,  154108., 159148.,
      164188., 169228., 174268., 179308., 184348., 189388., 98498.,  101114.,
      61500.,  63244.,  131048., 134664., 138280., 141896., 145512., 149128.,
      152744., 156360., 81036.,  82908.,  38030.,  38966.,  80532.,  82468.,
      84404.,  86340.,  88276.,  90212.,  92148.,  94084.,  48630.,  49630.,
      670.,    1734.,   3508.,   5700.,   7892.,   10084.,  12276.,  14468.,
      16660.,  18852.,  9734.,   10862.,  12060.,  14316.,  29352.,  33992.,
      38632.,  43272.,  47912.,  52552.,  57192.,  61832.,  31852.,  34236.,
      35450.,  39026.,  80092.,  87436.,  94780.,  102124., 109468., 116812.,
      124156., 131500., 67634.,  71402.,  72120.,  77144.,  158288., 168592.,
      178896., 189200., 199504., 209808., 220112., 230416., 118360., 123640.,
      122360., 127384., 261328., 271632., 281936., 292240., 302544., 312848.,
      323152., 333456., 171160., 176440., 118730., 122690., 251260., 259372.,
      267484., 275596., 283708., 291820., 299932., 308044., 157826., 161978.,
      97980.,  100748., 206056., 211720., 217384., 223048., 228712., 234376.,
      240040., 245704., 125708., 128604., 58830.,  60278.,  123156., 126116.,
      129076., 132036., 134996., 137956., 140916., 143876., 73526.,  75038.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1056.,   1128.,   1200.,   1272.,   1734.,   1836.,   1938.,   2040.,
      2595.,   2730.,   2865.,   3000.,   3030.,   3180.,   3330.,   3480.,
      2886.,   3012.,   3138.,   3264.,   2523.,   2622.,   2721.,   2820.,
      2788.,   2920.,   3052.,   3184.,   4328.,   4512.,   4696.,   4880.,
      6200.,   6440.,   6680.,   6920.,   6980.,   7240.,   7500.,   7760.,
      6376.,   6592.,   6808.,   7024.,   5392.,   5560.,   5728.,   5896.,
      5810.,   6020.,   6230.,   6440.,   8730.,   9020.,   9310.,   9600.,
      12175.,  12550.,  12925.,  13300.,  13400.,  13800.,  14200.,  14600.,
      11930.,  12260.,  12590.,  12920.,  9875.,   10130.,  10385.,  10640.,
      9860.,   10160.,  10460.,  10760.,  14370.,  14780.,  15190.,  15600.,
      19525.,  20050.,  20575.,  21100.,  20750.,  21300.,  21850.,  22400.,
      18050.,  18500.,  18950.,  19400.,  14645.,  14990.,  15335.,  15680.,
      13910.,  14300.,  14690.,  15080.,  20010.,  20540.,  21070.,  21600.,
      26875.,  27550.,  28225.,  28900.,  28100.,  28800.,  29500.,  30200.,
      24170.,  24740.,  25310.,  25880.,  19415.,  19850.,  20285.,  20720.,
      17960.,  18440.,  18920.,  19400.,  25650.,  26300.,  26950.,  27600.,
      34225.,  35050.,  35875.,  36700.,  35450.,  36300.,  37150.,  38000.,
      30290.,  30980.,  31670.,  32360.,  24185.,  24710.,  25235.,  25760.,
      21268.,  21688.,  22108.,  22528.,  29896.,  30464.,  31032.,  31600.,
      39320.,  40040.,  40760.,  41480.,  40500.,  41240.,  41980.,  42720.,
      34120.,  34720.,  35320.,  35920.,  26896.,  27352.,  27808.,  28264.,
      21486.,  21828.,  22170.,  22512.,  29934.,  30396.,  30858.,  31320.,
      39045.,  39630.,  40215.,  40800.,  40080.,  40680.,  41280.,  41880.,
      33486.,  33972.,  34458.,  34944.,  26193.,  26562.,  26931.,  27300.,
      11856.,  12360.,  12864.,  13368.,  17286.,  17964.,  18642.,  19320.,
      23475.,  24330.,  25185.,  26040.,  23910.,  24780.,  25650.,  26520.,
      20742.,  21444.,  22146.,  22848.,  16779.,  17310.,  17841.,  18372.,
      22948.,  23656.,  24364.,  25072.,  32744.,  33696.,  34648.,  35600.,
      43640.,  44840.,  46040.,  47240.,  44420.,  45640.,  46860.,  48080.,
      37864.,  38848.,  39832.,  40816.,  30160.,  30904.,  31648.,  32392.,
      38210.,  39140.,  40070.,  41000.,  53850.,  55100.,  56350.,  57600.,
      70975.,  72550.,  74125.,  75700.,  72200.,  73800.,  75400.,  77000.,
      60890.,  62180.,  63470.,  64760.,  48035.,  49010.,  49985.,  50960.,
      42260.,  43280.,  44300.,  45320.,  59490.,  60860.,  62230.,  63600.,
      78325.,  80050.,  81775.,  83500.,  79550.,  81300.,  83050.,  84800.,
      67010.,  68420.,  69830.,  71240.,  52805.,  53870.,  54935.,  56000.,
      46310.,  47420.,  48530.,  49640.,  65130.,  66620.,  68110.,  69600.,
      85675.,  87550.,  89425.,  91300.,  86900.,  88800.,  90700.,  92600.,
      73130.,  74660.,  76190.,  77720.,  57575.,  58730.,  59885.,  61040.,
      50360.,  51560.,  52760.,  53960.,  70770.,  72380.,  73990.,  75600.,
      93025.,  95050.,  97075.,  99100.,  94250.,  96300.,  98350.,  100400.,
      79250.,  80900.,  82550.,  84200.,  62345.,  63590.,  64835.,  66080.,
      52948.,  53944.,  54940.,  55936.,  73672.,  75008.,  76344.,  77680.,
      95960.,  97640.,  99320.,  101000., 97140.,  98840.,  100540., 102240.,
      80968.,  82336.,  83704.,  85072.,  63184.,  64216.,  65248.,  66280.,
      49566.,  50340.,  51114.,  51888.,  68526.,  69564.,  70602.,  71640.,
      88725.,  90030.,  91335.,  92640.,  89760.,  91080.,  92400.,  93720.,
      74382.,  75444.,  76506.,  77568.,  57729.,  58530.,  59331.,  60132.,
      22656.,  23592.,  24528.,  25464.,  32838.,  34092.,  35346.,  36600.,
      44355.,  45930.,  47505.,  49080.,  44790.,  46380.,  47970.,  49560.,
      38598.,  39876.,  41154.,  42432.,  31035.,  31998.,  32961.,  33924.,
      43108.,  44392.,  45676.,  46960.,  61160.,  62880.,  64600.,  66320.,
      81080.,  83240.,  85400.,  87560.,  81860.,  84040.,  86220.,  88400.,
      69352.,  71104.,  72856.,  74608.,  54928.,  56248.,  57568.,  58888.,
      70610.,  72260.,  73910.,  75560.,  98970.,  101180., 103390., 105600.,
      129775., 132550., 135325., 138100., 131000., 133800., 136600., 139400.,
      109850., 112100., 114350., 116600., 86195.,  87890.,  89585.,  91280.,
      74660.,  76400.,  78140.,  79880.,  104610., 106940., 109270., 111600.,
      137125., 140050., 142975., 145900., 138350., 141300., 144250., 147200.,
      115970., 118340., 120710., 123080., 90965.,  92750.,  94535.,  96320.,
      78710.,  80540.,  82370.,  84200.,  110250., 112700., 115150., 117600.,
      144475., 147550., 150625., 153700., 145700., 148800., 151900., 155000.,
      122090., 124580., 127070., 129560., 95735.,  97610.,  99485.,  101360.,
      82760.,  84680.,  86600.,  88520.,  115890., 118460., 121030., 123600.,
      151825., 155050., 158275., 161500., 153050., 156300., 159550., 162800.,
      128210., 130820., 133430., 136040., 100505., 102470., 104435., 106400.,
      84628.,  86200.,  87772.,  89344.,  117448., 119552., 121656., 123760.,
      152600., 155240., 157880., 160520., 153780., 156440., 159100., 161760.,
      127816., 129952., 132088., 134224., 99472.,  101080., 102688., 104296.,
      77646.,  78852.,  80058.,  81264.,  107118., 108732., 110346., 111960.,
      138405., 140430., 142455., 144480., 139440., 141480., 143520., 145560.,
      115278., 116916., 118554., 120192., 89265.,  90498.,  91731.,  92964.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,    13.,    16.,    19.,    22.,
      25.,   28.,   31.,   34.,   37.,   40.,    43.,    46.,    49.,    52.,
      34.,   36.,   38.,   40.,   24.,   28.,    32.,    36.,    86.,    96.,
      106.,  116.,  126.,  136.,  146.,  156.,   166.,   176.,   186.,   196.,
      206.,  216.,  226.,  236.,  142.,  148.,   154.,   160.,   109.,   118.,
      127.,  136.,  317.,  338.,  359.,  380.,   401.,   422.,   443.,   464.,
      485.,  506.,  527.,  548.,  569.,  590.,   611.,   632.,   364.,   376.,
      388.,  400.,  296.,  312.,  328.,  344.,   780.,   816.,   852.,   888.,
      924.,  960.,  996.,  1032., 1068., 1104.,  1140.,  1176.,  1212.,  1248.,
      1284., 1320., 740.,  760.,  780.,  800.,   616.,   632.,   648.,   664.,
      1500., 1536., 1572., 1608., 1644., 1680.,  1716.,  1752.,  1788.,  1824.,
      1860., 1896., 1932., 1968., 2004., 2040.,  1140.,  1160.,  1180.,  1200.,
      835.,  850.,  865.,  880.,  1913., 1946.,  1979.,  2012.,  2045.,  2078.,
      2111., 2144., 2177., 2210., 2243., 2276.,  2309.,  2342.,  2375.,  2408.,
      1306., 1324., 1342., 1360., 832.,  844.,   856.,   868.,   1854.,  1880.,
      1906., 1932., 1958., 1984., 2010., 2036.,  2062.,  2088.,  2114.,  2140.,
      2166., 2192., 2218., 2244., 1198., 1212.,  1226.,  1240.,  567.,   574.,
      581.,  588.,  1243., 1258., 1273., 1288.,  1303.,  1318.,  1333.,  1348.,
      1363., 1378., 1393., 1408., 1423., 1438.,  1453.,  1468.,  776.,   784.,
      792.,  800.,  9.,    18.,   27.,   36.,    55.,    74.,    93.,    112.,
      131.,  150.,  169.,  188.,  207.,  226.,   245.,   264.,   283.,   302.,
      321.,  340.,  170.,  180.,  190.,  200.,   200.,   220.,   240.,   260.,
      502.,  544.,  586.,  628.,  670.,  712.,   754.,   796.,   838.,   880.,
      922.,  964.,  1006., 1048., 1090., 1132.,  574.,   596.,   618.,   640.,
      613.,  646.,  679.,  712.,  1421., 1490.,  1559.,  1628.,  1697.,  1766.,
      1835., 1904., 1973., 2042., 2111., 2180.,  2249.,  2318.,  2387.,  2456.,
      1252., 1288., 1324., 1360., 1288., 1336.,  1384.,  1432.,  2892.,  2992.,
      3092., 3192., 3292., 3392., 3492., 3592.,  3692.,  3792.,  3892.,  3992.,
      4092., 4192., 4292., 4392., 2244., 2296.,  2348.,  2400.,  2248.,  2296.,
      2344., 2392., 4892., 4992., 5092., 5192.,  5292.,  5392.,  5492.,  5592.,
      5692., 5792., 5892., 5992., 6092., 6192.,  6292.,  6392.,  3284.,  3336.,
      3388., 3440., 2299., 2338., 2377., 2416.,  4937.,  5018.,  5099.,  5180.,
      5261., 5342., 5423., 5504., 5585., 5666.,  5747.,  5828.,  5909.,  5990.,
      6071., 6152., 3154., 3196., 3238., 3280.,  1968.,  1996.,  2024.,  2052.,
      4190., 4248., 4306., 4364., 4422., 4480.,  4538.,  4596.,  4654.,  4712.,
      4770., 4828., 4886., 4944., 5002., 5060.,  2590.,  2620.,  2650.,  2680.,
      1215., 1230., 1245., 1260., 2571., 2602.,  2633.,  2664.,  2695.,  2726.,
      2757., 2788., 2819., 2850., 2881., 2912.,  2943.,  2974.,  3005.,  3036.,
      1552., 1568., 1584., 1600., 17.,   34.,    51.,    68.,    103.,   138.,
      173.,  208.,  243.,  278.,  313.,  348.,   383.,   418.,   453.,   488.,
      523.,  558.,  593.,  628.,  306.,  324.,   342.,   360.,   376.,   412.,
      448.,  484.,  918.,  992.,  1066., 1140.,  1214.,  1288.,  1362.,  1436.,
      1510., 1584., 1658., 1732., 1806., 1880.,  1954.,  2028.,  1006.,  1044.,
      1082., 1120., 1117., 1174., 1231., 1288.,  2525.,  2642.,  2759.,  2876.,
      2993., 3110., 3227., 3344., 3461., 3578.,  3695.,  3812.,  3929.,  4046.,
      4163., 4280., 2140., 2200., 2260., 2320.,  2280.,  2360.,  2440.,  2520.,
      5004., 5168., 5332., 5496., 5660., 5824.,  5988.,  6152.,  6316.,  6480.,
      6644., 6808., 6972., 7136., 7300., 7464.,  3748.,  3832.,  3916.,  4000.,
      3880., 3960., 4040., 4120., 8284., 8448.,  8612.,  8776.,  8940.,  9104.,
      9268., 9432., 9596., 9760., 9924., 10088., 10252., 10416., 10580., 10744.,
      5428., 5512., 5596., 5680., 3763., 3826.,  3889.,  3952.,  7961.,  8090.,
      8219., 8348., 8477., 8606., 8735., 8864.,  8993.,  9122.,  9251.,  9380.,
      9509., 9638., 9767., 9896., 5002., 5068.,  5134.,  5200.,  3104.,  3148.,
      3192., 3236., 6526., 6616., 6706., 6796.,  6886.,  6976.,  7066.,  7156.,
      7246., 7336., 7426., 7516., 7606., 7696.,  7786.,  7876.,  3982.,  4028.,
      4074., 4120., 1863., 1886., 1909., 1932.,  3899.,  3946.,  3993.,  4040.,
      4087., 4134., 4181., 4228., 4275., 4322.,  4369.,  4416.,  4463.,  4510.,
      4557., 4604., 2328., 2352., 2376., 2400.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7863.,    8421.,    8979.,    9537.,    13032.,   13824.,   14616.,
      15408.,   19635.,   20685.,   21735.,   22785.,   23085.,   24255.,
      25425.,   26595.,   22104.,   23088.,   24072.,   25056.,   19401.,
      20175.,   20949.,   21723.,   21212.,   22244.,   23276.,   24308.,
      33088.,   34528.,   35968.,   37408.,   47580.,   49460.,   51340.,
      53220.,   53780.,   55820.,   57860.,   59900.,   49280.,   50976.,
      52672.,   54368.,   41780.,   43100.,   44420.,   45740.,   44725.,
      46375.,   48025.,   49675.,   67400.,   69680.,   71960.,   74240.,
      94225.,   97175.,   100125.,  103075.,  103975.,  107125.,  110275.,
      113425.,  92760.,   95360.,   97960.,   100560.,  76915.,   78925.,
      80935.,   82945.,   76945.,   79315.,   81685.,   84055.,   112280.,
      115520.,  118760.,  122000.,  152725.,  156875.,  161025.,  165175.,
      162475.,  166825.,  171175.,  175525.,  141480.,  145040.,  148600.,
      152160.,  114895.,  117625.,  120355.,  123085.,  109165.,  112255.,
      115345.,  118435.,  157160.,  161360.,  165560.,  169760.,  211225.,
      216575.,  221925.,  227275.,  220975.,  226525.,  232075.,  237625.,
      190200.,  194720.,  199240.,  203760.,  152875.,  156325.,  159775.,
      163225.,  141385.,  145195.,  149005.,  152815.,  202040.,  207200.,
      212360.,  217520.,  269725.,  276275.,  282825.,  289375.,  279475.,
      286225.,  292975.,  299725.,  238920.,  244400.,  249880.,  255360.,
      190855.,  195025.,  199195.,  203365.,  167996.,  171332.,  174668.,
      178004.,  236224.,  240736.,  245248.,  249760.,  310780.,  316500.,
      322220.,  327940.,  320180.,  326060.,  331940.,  337820.,  269824.,
      274592.,  279360.,  284128.,  212756.,  216380.,  220004.,  223628.,
      170043.,  172761.,  175479.,  178197.,  236952.,  240624.,  244296.,
      247968.,  309135.,  313785.,  318435.,  323085.,  317385.,  322155.,
      326925.,  331695.,  265224.,  269088.,  272952.,  276816.,  207501.,
      210435.,  213369.,  216303.,  93399.,   97413.,   101427.,  105441.,
      136296.,  141696.,  147096.,  152496.,  185235.,  192045.,  198855.,
      205665.,  188685.,  195615.,  202545.,  209475.,  163800.,  169392.,
      174984.,  180576.,  132585.,  136815.,  141045.,  145275.,  181340.,
      186980.,  192620.,  198260.,  258880.,  266464.,  274048.,  281632.,
      345180.,  354740.,  364300.,  373860.,  351380.,  361100.,  370820.,
      380540.,  299648.,  307488.,  315328.,  323168.,  238772.,  244700.,
      250628.,  256556.,  302485.,  309895.,  317305.,  324715.,  426440.,
      436400.,  446360.,  456320.,  562225.,  574775.,  587325.,  599875.,
      571975.,  584725.,  597475.,  610225.,  482520.,  492800.,  503080.,
      513360.,  380755.,  388525.,  396295.,  404065.,  334705.,  342835.,
      350965.,  359095.,  471320.,  482240.,  493160.,  504080.,  620725.,
      634475.,  648225.,  661975.,  630475.,  644425.,  658375.,  672325.,
      531240.,  542480.,  553720.,  564960.,  418735.,  427225.,  435715.,
      444205.,  366925.,  375775.,  384625.,  393475.,  516200.,  528080.,
      539960.,  551840.,  679225.,  694175.,  709125.,  724075.,  688975.,
      704125.,  719275.,  734425.,  579960.,  592160.,  604360.,  616560.,
      456715.,  465925.,  475135.,  484345.,  399145.,  408715.,  418285.,
      427855.,  561080.,  573920.,  586760.,  599600.,  737725.,  753875.,
      770025.,  786175.,  747475.,  763825.,  780175.,  796525.,  628680.,
      641840.,  655000.,  668160.,  494695.,  504625.,  514555.,  524485.,
      420284.,  428228.,  436172.,  444116.,  584896.,  595552.,  606208.,
      616864.,  761980.,  775380.,  788780.,  802180.,  771380.,  784940.,
      798500.,  812060.,  643072.,  653984.,  664896.,  675808.,  501908.,
      510140.,  518372.,  526604.,  393819.,  399993.,  406167.,  412341.,
      544536.,  552816.,  561096.,  569376.,  705135.,  715545.,  725955.,
      736365.,  713385.,  723915.,  734445.,  744975.,  591240.,  599712.,
      608184.,  616656.,  458925.,  465315.,  471705.,  478095.,  178935.,
      186405.,  193875.,  201345.,  259560.,  269568.,  279576.,  289584.,
      350835.,  363405.,  375975.,  388545.,  354285.,  366975.,  379665.,
      392355.,  305496.,  315696.,  325896.,  336096.,  245769.,  253455.,
      261141.,  268827.,  341468.,  351716.,  361964.,  372212.,  484672.,
      498400.,  512128.,  525856.,  642780.,  660020.,  677260.,  694500.,
      648980.,  666380.,  683780.,  701180.,  550016.,  564000.,  577984.,
      591968.,  435764.,  446300.,  456836.,  467372.,  560245.,  573415.,
      586585.,  599755.,  785480.,  803120.,  820760.,  838400.,  1030225.,
      1052375., 1074525., 1096675., 1039975., 1062325., 1084675., 1107025.,
      872280.,  890240.,  908200.,  926160.,  684595.,  698125.,  711655.,
      725185.,  592465.,  606355.,  620245.,  634135.,  830360.,  848960.,
      867560.,  886160.,  1088725., 1112075., 1135425., 1158775., 1098475.,
      1122025., 1145575., 1169125., 921000.,  939920.,  958840.,  977760.,
      722575.,  736825.,  751075.,  765325.,  624685.,  639295.,  653905.,
      668515.,  875240.,  894800.,  914360.,  933920.,  1147225., 1171775.,
      1196325., 1220875., 1156975., 1181725., 1206475., 1231225., 969720.,
      989600.,  1009480., 1029360., 760555.,  775525.,  790495.,  805465.,
      656905.,  672235.,  687565.,  702895.,  920120.,  940640.,  961160.,
      981680.,  1205725., 1231475., 1257225., 1282975., 1215475., 1241425.,
      1267375., 1293325., 1018440., 1039280., 1060120., 1080960., 798535.,
      814225.,  829915.,  845605.,  672572.,  685124.,  697676.,  710228.,
      933568.,  950368.,  967168.,  983968.,  1213180., 1234260., 1255340.,
      1276420., 1222580., 1243820., 1265060., 1286300., 1016320., 1033376.,
      1050432., 1067488., 791060.,  803900.,  816740.,  829580.,  617595.,
      627225.,  636855.,  646485.,  852120.,  865008.,  877896.,  890784.,
      1101135., 1117305., 1133475., 1149645., 1109385., 1125675., 1141965.,
      1158255., 917256.,  930336.,  943416.,  956496.,  710349.,  720195.,
      730041.,  739887.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    40.,    60.,    80.,    100.,   120.,
      140.,   160.,   180.,   200.,   220.,   240.,   260.,   280.,   300.,
      320.,   340.,   235.,   249.,   263.,   277.,   142.,   170.,   198.,
      226.,   568.,   640.,   712.,   784.,   856.,   928.,   1000.,  1072.,
      1144.,  1216.,  1288.,  1360.,  1432.,  1504.,  1576.,  1648.,  1018.,
      1062.,  1106.,  1150.,  731.,   797.,   863.,   929.,   2224.,  2380.,
      2536.,  2692.,  2848.,  3004.,  3160.,  3316.,  3472.,  3628.,  3784.,
      3940.,  4096.,  4252.,  4408.,  4564.,  2669.,  2759.,  2849.,  2939.,
      2092.,  2212.,  2332.,  2452.,  5648.,  5920.,  6192.,  6464.,  6736.,
      7008.,  7280.,  7552.,  7824.,  8096.,  8368.,  8640.,  8912.,  9184.,
      9456.,  9728.,  5508.,  5660.,  5812.,  5964.,  4492.,  4612.,  4732.,
      4852.,  11088., 11360., 11632., 11904., 12176., 12448., 12720., 12992.,
      13264., 13536., 13808., 14080., 14352., 14624., 14896., 15168., 8548.,
      8700.,  8852.,  9004.,  6287.,  6401.,  6515.,  6629.,  14488., 14740.,
      14992., 15244., 15496., 15748., 16000., 16252., 16504., 16756., 17008.,
      17260., 17512., 17764., 18016., 18268., 9953.,  10091., 10229., 10367.,
      6350.,  6442.,  6534.,  6626.,  14200., 14400., 14600., 14800., 15000.,
      15200., 15400., 15600., 15800., 16000., 16200., 16400., 16600., 16800.,
      17000., 17200., 9210.,  9318.,  9426.,  9534.,  4361.,  4415.,  4469.,
      4523.,  9584.,  9700.,  9816.,  9932.,  10048., 10164., 10280., 10396.,
      10512., 10628., 10744., 10860., 10976., 11092., 11208., 11324., 5999.,
      6061.,  6123.,  6185.,  53.,    123.,   193.,   263.,   392.,   540.,
      688.,   836.,   984.,   1132.,  1280.,  1428.,  1576.,  1724.,  1872.,
      2020.,  2168.,  2316.,  2464.,  2612.,  1307.,  1385.,  1463.,  1541.,
      1518.,  1674.,  1830.,  1986.,  3832.,  4160.,  4488.,  4816.,  5144.,
      5472.,  5800.,  6128.,  6456.,  6784.,  7112.,  7440.,  7768.,  8096.,
      8424.,  8752.,  4442.,  4614.,  4786.,  4958.,  4715.,  4973.,  5231.,
      5489.,  10960., 11500., 12040., 12580., 13120., 13660., 14200., 14740.,
      15280., 15820., 16360., 16900., 17440., 17980., 18520., 19060., 9725.,
      10007., 10289., 10571., 9964.,  10340., 10716., 11092., 22416., 23200.,
      23984., 24768., 25552., 26336., 27120., 27904., 28688., 29472., 30256.,
      31040., 31824., 32608., 33392., 34176., 17476., 17884., 18292., 18700.,
      17484., 17860., 18236., 18612., 38096., 38880., 39664., 40448., 41232.,
      42016., 42800., 43584., 44368., 45152., 45936., 46720., 47504., 48288.,
      49072., 49856., 25636., 26044., 26452., 26860., 17951., 18257., 18563.,
      18869., 38584., 39220., 39856., 40492., 41128., 41764., 42400., 43036.,
      43672., 44308., 44944., 45580., 46216., 46852., 47488., 48124., 24689.,
      25019., 25349., 25679., 15406., 15626., 15846., 16066., 32824., 33280.,
      33736., 34192., 34648., 35104., 35560., 36016., 36472., 36928., 37384.,
      37840., 38296., 38752., 39208., 39664., 20314., 20550., 20786., 21022.,
      9529.,  9647.,  9765.,  9883.,  20176., 20420., 20664., 20908., 21152.,
      21396., 21640., 21884., 22128., 22372., 22616., 22860., 23104., 23348.,
      23592., 23836., 12191., 12317., 12443., 12569., 101.,   235.,   369.,
      503.,   744.,   1020.,  1296.,  1572.,  1848.,  2124.,  2400.,  2676.,
      2952.,  3228.,  3504.,  3780.,  4056.,  4332.,  4608.,  4884.,  2379.,
      2521.,  2663.,  2805.,  2894.,  3178.,  3462.,  3746.,  7096.,  7680.,
      8264.,  8848.,  9432.,  10016., 10600., 11184., 11768., 12352., 12936.,
      13520., 14104., 14688., 15272., 15856., 7866.,  8166.,  8466.,  8766.,
      8699.,  9149.,  9599.,  10049., 19696., 20620., 21544., 22468., 23392.,
      24316., 25240., 26164., 27088., 28012., 28936., 29860., 30784., 31708.,
      32632., 33556., 16781., 17255., 17729., 18203., 17836., 18468., 19100.,
      19732., 39184., 40480., 41776., 43072., 44368., 45664., 46960., 48256.,
      49552., 50848., 52144., 53440., 54736., 56032., 57328., 58624., 29444.,
      30108., 30772., 31436., 30476., 31108., 31740., 32372., 65104., 66400.,
      67696., 68992., 70288., 71584., 72880., 74176., 75472., 76768., 78064.,
      79360., 80656., 81952., 83248., 84544., 42724., 43388., 44052., 44716.,
      29615., 30113., 30611., 31109., 62680., 63700., 64720., 65740., 66760.,
      67780., 68800., 69820., 70840., 71860., 72880., 73900., 74920., 75940.,
      76960., 77980., 39425., 39947., 40469., 40991., 24462., 24810., 25158.,
      25506., 51448., 52160., 52872., 53584., 54296., 55008., 55720., 56432.,
      57144., 57856., 58568., 59280., 59992., 60704., 61416., 62128., 31418.,
      31782., 32146., 32510., 14697., 14879., 15061., 15243., 30768., 31140.,
      31512., 31884., 32256., 32628., 33000., 33372., 33744., 34116., 34488.,
      34860., 35232., 35604., 35976., 36348., 18383., 18573., 18763., 18953.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      60582.,    64974.,    69366.,   73758.,    100920.,   107160.,  113400.,
      119640.,   152610.,   160890.,  169170.,   177450.,   180090.,  189330.,
      198570.,   207810.,   172920.,  180696.,   188472.,   196248.,  152094.,
      158214.,   164334.,   170454.,  165352.,   173512.,   181672.,  189832.,
      258592.,   269984.,   281376.,  292768.,   372600.,   387480.,  402360.,
      417240.,   422040.,   438200.,  454360.,   470520.,   387360.,  400800.,
      414240.,   427680.,   328840.,  339304.,   349768.,   360232.,  350810.,
      363890.,   376970.,   390050.,  529480.,   547560.,   565640.,  583720.,
      741150.,   764550.,   787950.,  811350.,   818950.,   843950.,  868950.,
      893950.,   731400.,   752040.,  772680.,   793320.,   607010.,  622970.,
      638930.,   654890.,   607850.,  626690.,   645530.,   664370.,  887560.,
      913320.,   939080.,   964840.,  1207950.,  1240950.,  1273950., 1306950.,
      1285750.,  1320350.,  1354950., 1389550.,  1120200.,  1148520., 1176840.,
      1205160.,  910130.,   931850.,  953570.,   975290.,   864890.,  889490.,
      914090.,   938690.,   1245640., 1279080.,  1312520.,  1345960., 1674750.,
      1717350.,  1759950.,  1802550., 1752550.,  1796750.,  1840950., 1885150.,
      1509000.,  1545000.,  1581000., 1617000.,  1213250.,  1240730., 1268210.,
      1295690.,  1121930.,  1152290., 1182650.,  1213010.,  1603720., 1644840.,
      1685960.,  1727080.,  2141550., 2193750.,  2245950.,  2298150., 2219350.,
      2273150.,  2326950.,  2380750., 1897800.,  1941480.,  1985160., 2028840.,
      1516370.,  1549610.,  1582850., 1616090.,  1335400.,  1361992., 1388584.,
      1415176.,  1878048.,  1914016., 1949984.,  1985952.,  2471160., 2516760.,
      2562360.,  2607960.,  2546200., 2593080.,  2639960.,  2686840., 2146080.,
      2184096.,  2222112.,  2260128., 1692424.,  1721320.,  1750216., 1779112.,
      1352982.,  1374654.,  1396326., 1417998.,  1885560.,  1914840., 1944120.,
      1973400.,  2460210.,  2497290., 2534370.,  2571450.,  2526090., 2564130.,
      2602170.,  2640210.,  2111160., 2141976.,  2172792.,  2203608., 1651854.,
      1675254.,  1698654.,  1722054., 741414.,   773454.,   805494.,  837534.,
      1082424.,  1125528.,  1168632., 1211736.,  1471650.,  1526010., 1580370.,
      1634730.,  1499130.,  1554450., 1609770.,  1665090.,  1301880., 1346520.,
      1391160.,  1435800.,  1054110., 1087878.,  1121646.,  1155414., 1441768.,
      1486792.,  1531816.,  1576840., 2058784.,  2119328.,  2179872., 2240416.,
      2745720.,  2822040.,  2898360., 2974680.,  2795160.,  2872760., 2950360.,
      3027960.,  2384160.,  2446752., 2509344.,  2571936.,  1900168., 1947496.,
      1994824.,  2042152.,  2407130., 2466290.,  2525450.,  2584610., 3394120.,
      3473640.,  3553160.,  3632680., 4475550.,  4575750.,  4675950., 4776150.,
      4553350.,  4655150.,  4756950., 4858750.,  3841800.,  3923880., 4005960.,
      4088040.,  3031970.,  3094010., 3156050.,  3218090.,  2664170., 2729090.,
      2794010.,  2858930.,  3752200., 3839400.,  3926600.,  4013800., 4942350.,
      5052150.,  5161950.,  5271750., 5020150.,  5131550.,  5242950., 5354350.,
      4230600.,  4320360.,  4410120., 4499880.,  3335090.,  3402890., 3470690.,
      3538490.,  2921210.,  2991890., 3062570.,  3133250.,  4110280., 4205160.,
      4300040.,  4394920.,  5409150., 5528550.,  5647950.,  5767350., 5486950.,
      5607950.,  5728950.,  5849950., 4619400.,  4716840.,  4814280., 4911720.,
      3638210.,  3711770.,  3785330., 3858890.,  3178250.,  3254690., 3331130.,
      3407570.,  4468360.,  4570920., 4673480.,  4776040.,  5875950., 6004950.,
      6133950.,  6262950.,  5953750., 6084350.,  6214950.,  6345550., 5008200.,
      5113320.,  5218440.,  5323560., 3941330.,  4020650.,  4099970., 4179290.,
      3349096.,  3412552.,  3476008., 3539464.,  4661280.,  4746400., 4831520.,
      4916640.,  6073080.,  6180120., 6287160.,  6394200.,  6148120., 6256440.,
      6364760.,  6473080.,  5125920., 5213088.,  5300256.,  5387424., 4001032.,
      4066792.,  4132552.,  4198312., 3139734.,  3189054.,  3238374., 3287694.,
      4341624.,  4407768.,  4473912., 4540056.,  5622450.,  5705610., 5788770.,
      5871930.,  5688330.,  5772450., 5856570.,  5940690.,  4714680., 4782360.,
      4850040.,  4917720.,  3659790., 3710838.,  3761886.,  3812934., 1422246.,
      1481934.,  1541622.,  1601310., 2063928.,  2143896.,  2223864., 2303832.,
      2790690.,  2891130.,  2991570., 3092010.,  2818170.,  2919570., 3020970.,
      3122370.,  2430840.,  2512344., 2593848.,  2675352.,  1956126., 2017542.,
      2078958.,  2140374.,  2718184., 2800072.,  2881960.,  2963848., 3858976.,
      3968672.,  4078368.,  4188064., 5118840.,  5256600.,  5394360., 5532120.,
      5168280.,  5307320.,  5446360., 5585400.,  4380960.,  4492704., 4604448.,
      4716192.,  3471496.,  3555688., 3639880.,  3724072.,  4463450., 4568690.,
      4673930.,  4779170.,  6258760., 6399720.,  6540680.,  6681640., 8209950.,
      8386950.,  8563950.,  8740950., 8287750.,  8466350.,  8644950., 8823550.,
      6952200.,  7095720.,  7239240., 7382760.,  5456930.,  5565050., 5673170.,
      5781290.,  4720490.,  4831490., 4942490.,  5053490.,  6616840., 6765480.,
      6914120.,  7062760.,  8676750., 8863350.,  9049950.,  9236550., 8754550.,
      8942750.,  9130950.,  9319150., 7341000.,  7492200.,  7643400., 7794600.,
      5760050.,  5873930.,  5987810., 6101690.,  4977530.,  5094290., 5211050.,
      5327810.,  6974920.,  7131240., 7287560.,  7443880.,  9143550., 9339750.,
      9535950.,  9732150.,  9221350., 9419150.,  9616950.,  9814750., 7729800.,
      7888680.,  8047560.,  8206440., 6063170.,  6182810.,  6302450., 6422090.,
      5234570.,  5357090.,  5479610., 5602130.,  7333000.,  7497000., 7661000.,
      7825000.,  9610350.,  9816150., 10021950., 10227750., 9688150., 9895550.,
      10102950., 10310350., 8118600., 8285160.,  8451720.,  8618280., 6366290.,
      6491690.,  6617090.,  6742490., 5362792.,  5463112.,  5563432., 5663752.,
      7444512.,  7578784.,  7713056., 7847328.,  9675000.,  9843480., 10011960.,
      10180440., 9750040.,  9919800., 10089560., 10259320., 8105760., 8242080.,
      8378400.,  8514720.,  6309640., 6412264.,  6514888.,  6617512., 4926486.,
      5003454.,  5080422.,  5157390., 6797688.,  6900696.,  7003704., 7106712.,
      8784690.,  8913930.,  9043170., 9172410.,  8850570.,  8980770., 9110970.,
      9241170.,  7318200.,  7422744., 7527288.,  7631832.,  5667726., 5746422.,
      5825118.,  5903814.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    260.,    404.,    548.,    692.,
      836.,    980.,    1124.,   1268.,   1412.,   1556.,   1700.,   1844.,
      1988.,   2132.,   2276.,   2420.,   1734.,   1838.,   1942.,   2046.,
      940.,    1148.,   1356.,   1564.,   4072.,   4616.,   5160.,   5704.,
      6248.,   6792.,   7336.,   7880.,   8424.,   8968.,   9512.,   10056.,
      10600.,  11144.,  11688.,  12232.,  7676.,   8012.,   8348.,   8684.,
      5290.,   5794.,   6298.,   6802.,   16556.,  17756.,  18956.,  20156.,
      21356.,  22556.,  23756.,  24956.,  26156.,  27356.,  28556.,  29756.,
      30956.,  32156.,  33356.,  34556.,  20386.,  21082.,  21778.,  22474.,
      15640.,  16568.,  17496.,  18424.,  42832.,  44944.,  47056.,  49168.,
      51280.,  53392.,  55504.,  57616.,  59728.,  61840.,  63952.,  66064.,
      68176.,  70288.,  72400.,  74512.,  42424.,  43608.,  44792.,  45976.,
      34200.,  35128.,  36056.,  36984.,  85072.,  87184.,  89296.,  91408.,
      93520.,  95632.,  97744.,  99856.,  101968., 104080., 106192., 108304.,
      110416., 112528., 114640., 116752., 66104.,  67288.,  68472.,  69656.,
      48730.,  49618.,  50506.,  51394.,  112652., 114620., 116588., 118556.,
      120524., 122492., 124460., 126428., 128396., 130364., 132332., 134300.,
      136268., 138236., 140204., 142172., 77650.,  78730.,  79810.,  80890.,
      49580.,  50300.,  51020.,  51740.,  111080., 112648., 114216., 115784.,
      117352., 118920., 120488., 122056., 123624., 125192., 126760., 128328.,
      129896., 131464., 133032., 134600., 72188.,  73036.,  73884.,  74732.,
      34190.,  34614.,  35038.,  35462.,  75236.,  76148.,  77060.,  77972.,
      78884.,  79796.,  80708.,  81620.,  82532.,  83444.,  84356.,  85268.,
      86180.,  87092.,  88004.,  88916.,  47158.,  47646.,  48134.,  48622.,
      350.,    902.,    1454.,   2006.,   2948.,   4116.,   5284.,   6452.,
      7620.,   8788.,   9956.,   11124.,  12292.,  13460.,  14628.,  15796.,
      16964.,  18132.,  19300.,  20468.,  10246.,  10862.,  11478.,  12094.,
      11820.,  13052.,  14284.,  15516.,  29928.,  32520.,  35112.,  37704.,
      40296.,  42888.,  45480.,  48072.,  50664.,  53256.,  55848.,  58440.,
      61032.,  63624.,  66216.,  68808.,  34940.,  36300.,  37660.,  39020.,
      36970.,  39010.,  41050.,  43090.,  86060.,  90332.,  94604.,  98876.,
      103148., 107420., 111692., 115964., 120236., 124508., 128780., 133052.,
      137324., 141596., 145868., 150140., 76642.,  78874.,  81106.,  83338.,
      78360.,  81336.,  84312.,  87288.,  176464., 182672., 188880., 195088.,
      201296., 207504., 213712., 219920., 226128., 232336., 238544., 244752.,
      250960., 257168., 263376., 269584., 137912., 141144., 144376., 147608.,
      137880., 140856., 143832., 146808., 300624., 306832., 313040., 319248.,
      325456., 331664., 337872., 344080., 350288., 356496., 362704., 368912.,
      375120., 381328., 387536., 393744., 202552., 205784., 209016., 212248.,
      141850., 144274., 146698., 149122., 305036., 310076., 315116., 320156.,
      325196., 330236., 335276., 340316., 345356., 350396., 355436., 360476.,
      365516., 370556., 375596., 380636., 195346., 197962., 200578., 203194.,
      121900., 123644., 125388., 127132., 259816., 263432., 267048., 270664.,
      274280., 277896., 281512., 285128., 288744., 292360., 295976., 299592.,
      303208., 306824., 310440., 314056., 160892., 162764., 164636., 166508.,
      75470.,  76406.,  77342.,  78278.,  159844., 161780., 163716., 165652.,
      167588., 169524., 171460., 173396., 175332., 177268., 179204., 181140.,
      183076., 185012., 186948., 188884., 96630.,  97630.,  98630.,  99630.,
      670.,    1734.,   2798.,   3862.,   5636.,   7828.,   10020.,  12212.,
      14404.,  16596.,  18788.,  20980.,  23172.,  25364.,  27556.,  29748.,
      31940.,  34132.,  36324.,  38516.,  18758.,  19886.,  21014.,  22142.,
      22700.,  24956.,  27212.,  29468.,  55784.,  60424.,  65064.,  69704.,
      74344.,  78984.,  83624.,  88264.,  92904.,  97544.,  102184., 106824.,
      111464., 116104., 120744., 125384., 62204.,  64588.,  66972.,  69356.,
      68650.,  72226.,  75802.,  79378.,  155564., 162908., 170252., 177596.,
      184940., 192284., 199628., 206972., 214316., 221660., 229004., 236348.,
      243692., 251036., 258380., 265724., 132898., 136666., 140434., 144202.,
      141080., 146104., 151128., 156152., 310096., 320400., 330704., 341008.,
      351312., 361616., 371920., 382224., 392528., 402832., 413136., 423440.,
      433744., 444048., 454352., 464656., 233400., 238680., 243960., 249240.,
      241560., 246584., 251608., 256632., 516176., 526480., 536784., 547088.,
      557392., 567696., 578000., 588304., 598608., 608912., 619216., 629520.,
      639824., 650128., 660432., 670736., 339000., 344280., 349560., 354840.,
      234970., 238930., 242890., 246850., 497420., 505532., 513644., 521756.,
      529868., 537980., 546092., 554204., 562316., 570428., 578540., 586652.,
      594764., 602876., 610988., 619100., 313042., 317194., 321346., 325498.,
      194220., 196988., 199756., 202524., 408552., 414216., 419880., 425544.,
      431208., 436872., 442536., 448200., 453864., 459528., 465192., 470856.,
      476520., 482184., 487848., 493512., 249596., 252492., 255388., 258284.,
      116750., 118198., 119646., 121094., 244452., 247412., 250372., 253332.,
      256292., 259252., 262212., 265172., 268132., 271092., 274052., 277012.,
      279972., 282932., 285892., 288852., 146102., 147614., 149126., 150638.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      351.,   560.,   820.,   940.,   1060.,  980.,   837.,   892.,   1360.,
      1920.,  2130.,  2340.,  2096.,  1744.,  1820.,  2700.,  3725.,  4050.,
      4375.,  3840.,  3140.,  3080.,  4450.,  6000.,  6325.,  6650.,  5730.,
      4610.,  4340.,  6200.,  8275.,  8600.,  8925.,  7620.,  6080.,  5600.,
      7950.,  10550., 10875., 11200., 9510.,  7550.,  6514.,  9120.,  11950.,
      12260., 12570., 10544., 8278.,  6516.,  9050.,  11770., 12040., 12310.,
      10250., 7992.,  3879.,  5600.,  7540.,  7660.,  7780.,  6692.,  5373.,
      7276.,  10320., 13680., 13890., 14100., 11952., 9472.,  11900., 16700.,
      21925., 22250., 22575., 18960., 14900., 13160., 18450., 24200., 24525.,
      24850., 20850., 16370., 14420., 20200., 26475., 26800., 27125., 22740.,
      17840., 15680., 21950., 28750., 29075., 29400., 24630., 19310., 16258.,
      22560., 29310., 29620., 29930., 24880., 19366., 15084., 20810., 26890.,
      27160., 27430., 22682., 17568., 7407.,  10640., 14260., 14380., 14500.,
      12404., 9909.,  13660., 19280., 25440., 25650., 25860., 21808., 17200.,
      21980., 30700., 40125., 40450., 40775., 34080., 26660., 23240., 32450.,
      42400., 42725., 43050., 35970., 28130., 24500., 34200., 44675., 45000.,
      45325., 37860., 29600., 25760., 35950., 46950., 47275., 47600., 39750.,
      31070., 26002., 36000., 46670., 46980., 47290., 39216., 30454., 23652.,
      32570., 42010., 42280., 42550., 35114., 27144.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    10.,   16.,   22.,   22.,   15.,   10.,   32.,   68.,
      89.,   110.,  96.,   60.,   42.,   114.,  219.,  264.,  309.,  252.,
      150.,  112.,  280.,  508.,  586.,  664.,  520.,  300.,  222.,  520.,
      898.,  976.,  1054., 800.,  450.,  306.,  681.,  1128., 1200., 1272.,
      933.,  510.,  307.,  668.,  1085., 1142., 1199., 864.,  465.,  210.,
      451.,  724.,  757.,  790.,  563.,  300.,  13.,   40.,   82.,   124.,
      166.,  130.,  75.,   94.,   224.,  392.,  485.,  578.,  432.,  240.,
      258.,  582.,  975.,  1128., 1281., 936.,  510.,  520.,  1144., 1876.,
      2098., 2320., 1672., 900.,  870.,  1864., 2986., 3208., 3430., 2432.,
      1290., 882.,  1869., 2964., 3144., 3324., 2337., 1230., 751.,  1580.,
      2489., 2618., 2747., 1920., 1005., 462.,  967.,  1516., 1585., 1654.,
      1151., 600.,  25.,   76.,   154.,  232.,  310.,  238.,  135.,  178.,
      416.,  716.,  881.,  1046., 768.,  420.,  474.,  1050., 1731., 1992.,
      2253., 1620., 870.,  928.,  2008., 3244., 3610., 3976., 2824., 1500.,
      1518., 3208., 5074., 5440., 5806., 4064., 2130., 1458., 3057., 4800.,
      5088., 5376., 3741., 1950., 1195., 2492., 3893., 4094., 4295., 2976.,
      1545., 714.,  1483., 2308., 2413., 2518., 1739., 900.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2529.,   4084.,   6035.,   6965.,   7895.,   7348.,   6309.,   6620.,
      10160.,  14420.,  16060.,  17700.,  15920.,  13292.,  13735.,  20460.,
      28325.,  30875.,  33425.,  29420.,  24115.,  23605.,  34180.,  46175.,
      48725.,  51275.,  44260.,  35665.,  33475.,  47900.,  64025.,  66575.,
      69125.,  59100.,  47215.,  43345.,  61620.,  81875.,  84425.,  86975.,
      73940.,  58765.,  50804.,  71184.,  93340.,  95780.,  98220.,  82448.,
      64772.,  51039.,  70924.,  92285.,  94415.,  96545.,  80428.,  62739.,
      29745.,  43060.,  58115.,  59045.,  59975.,  51700.,  41589.,  56348.,
      80048.,  106260., 107900., 109540., 92976.,  73772.,  92695.,  130220.,
      171125., 173675., 176225., 148140., 116515., 102565., 143940., 188975.,
      191525., 194075., 162980., 128065., 112435., 157660., 206825., 209375.,
      211925., 177820., 139615., 122305., 171380., 224675., 227225., 229775.,
      192660., 151165., 127412., 176912., 229980., 232420., 234860., 195344.,
      152132., 118575., 163660., 211565., 213695., 215825., 178540., 138339.,
      56961.,  82036.,  110195., 111125., 112055., 96052.,  76869.,  106076.,
      149936., 198100., 199740., 201380., 170032., 134252., 171655., 239980.,
      313925., 316475., 319025., 266860., 208915., 181525., 253700., 331775.,
      334325., 336875., 281700., 220465., 191395., 267420., 349625., 352175.,
      354725., 296540., 232015., 201265., 281140., 367475., 370025., 372575.,
      311380., 243565., 204020., 282640., 366620., 369060., 371500., 308240.,
      239492., 186111., 256396., 330845., 332975., 335105., 276652., 213939.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     22.,    59.,    101.,   143.,   150.,   105.,   58.,    204.,
      454.,   610.,   766.,   684.,   434.,   279.,   786.,   1545.,  1887.,
      2229.,  1842.,  1107.,  788.,   2008.,  3692.,  4292.,  4892.,  3864.,
      2244.,  1628.,  3848.,  6692.,  7292.,  7892.,  6024.,  3404.,  2313.,
      5166.,  8583.,  9141.,  9699.,  7134.,  3909.,  2350.,  5124.,  8338.,
      8782.,  9226.,  6660.,  3590.,  1619.,  3482.,  5597.,  5855.,  6113.,
      4362.,  2327.,  77.,    262.,   563.,   893.,   1223.,  966.,   561.,
      682.,   1644.,  2902.,  3634.,  4366.,  3276.,  1826.,  1935.,  4386.,
      7377.,  8583.,  9789.,  7170.,  3915.,  3956.,  8728.,  14348., 16100.,
      17852., 12888., 6948.,  6716.,  14408., 23108., 24860., 26612., 18888.,
      10028., 6849.,  14526., 23055., 24477., 25899., 18222., 9597.,  5854.,
      12324., 19426., 20446., 21466., 15012., 7862.,  3611.,  7562.,  11861.,
      12407., 12953., 9018.,  4703.,  149.,   502.,   1067.,  1685.,  2303.,
      1782.,  1017.,  1306.,  3084.,  5350.,  6658.,  7966.,  5868.,  3218.,
      3591.,  7986.,  13209., 15279., 17349., 12498., 6723.,  7124.,  15448.,
      25004., 27908., 30812., 21912., 11652., 11804., 24968., 39524., 42428.,
      45332., 31752., 16652., 11385., 23886., 37527., 39813., 42099., 29310.,
      15285., 9358.,  19524., 30514., 32110., 33706., 23364., 12134., 5603.,
      11642., 18125., 18959., 19793., 13674., 7079.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19134.,   31112.,   46210.,   53530.,   60850.,   56840.,   48942.,
      50920.,   78432.,   111640.,  124600.,  137560.,  124000.,  103720.,
      106610.,  159160.,  220750.,  240950.,  261150.,  230200.,  188930.,
      184730.,  267800.,  362150.,  382350.,  402550.,  347800.,  280490.,
      262850.,  376440.,  503550.,  523750.,  543950.,  465400.,  372050.,
      340970.,  485080.,  644950.,  665150.,  685350.,  583000.,  463610.,
      401224.,  562400.,  737720.,  757080.,  776440.,  652000.,  512392.,
      403974.,  561512.,  730810.,  747730.,  764650.,  637160.,  497142.,
      232830.,  337544.,  456130.,  463450.,  470770.,  406280.,  327150.,
      443368.,  630368.,  837400.,  850360.,  863320.,  733280.,  582184.,
      731570.,  1028280., 1351950., 1372150., 1392350., 1171000., 921410.,
      809690.,  1136920., 1493350., 1513550., 1533750., 1288600., 1012970.,
      887810.,  1245560., 1634750., 1654950., 1675150., 1406200., 1104530.,
      965930.,  1354200., 1776150., 1796350., 1816550., 1523800., 1196090.,
      1008712., 1401056., 1821880., 1841240., 1860600., 1548000., 1205896.,
      940230.,  1298024., 1678330., 1695250., 1712170., 1416680., 1097910.,
      446526.,  643976.,  866050.,  873370.,  880690.,  755720.,  605358.,
      835816.,  1182304., 1563160., 1576120., 1589080., 1342560., 1060648.,
      1356530., 1897400., 2483150., 2503350., 2523550., 2111800., 1653890.,
      1434650., 2006040., 2624550., 2644750., 2664950., 2229400., 1745450.,
      1512770., 2114680., 2765950., 2786150., 2806350., 2347000., 1837010.,
      1590890., 2223320., 2907350., 2927550., 2947750., 2464600., 1928570.,
      1616200., 2239712., 2906040., 2925400., 2944760., 2444000., 1899400.,
      1476486., 2034536., 2625850., 2642770., 2659690., 2196200., 1698678.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     140.,    394.,    706.,    1018.,   1100.,   782.,    380.,
      1432.,   3284.,   4484.,   5684.,   5144.,   3292.,   2010.,   5796.,
      11550.,  14214.,  16878.,  14052.,  8490.,   5880.,   15152.,  28072.,
      32776.,  37480.,  29744.,  17336.,  12440.,  29552.,  51592.,  56296.,
      61000.,  46704.,  26456.,  17970.,  40212.,  66918.,  71310.,  75702.,
      55764.,  30594.,  18380.,  40120.,  65348.,  68852.,  72356.,  52280.,
      28204.,  12710.,  27356.,  44002.,  46042.,  48082.,  34332.,  18326.,
      510.,    1868.,   4138.,   6754.,   9370.,   7436.,   4334.,   5180.,
      12568.,  22292.,  28100.,  33908.,  25496.,  14236.,  14970.,  34020.,
      57342.,  66918.,  76494.,  56100.,  30666.,  30840.,  68144.,  112168.,
      126088., 140008., 101168., 54584.,  52760.,  113264., 181768., 195688.,
      209608., 148848., 79064.,  53970.,  114516., 181830., 193134., 204438.,
      143892., 75810.,  46220.,  97336.,  153476., 161588., 169700., 118712.,
      62188.,  28550.,  59804.,  93826.,  98170.,  102514., 71388.,  37238.,
      990.,    3596.,   7882.,   12802.,  17722.,  13772.,  7886.,   9980.,
      23704.,  41300.,  51716.,  62132.,  45848.,  25180.,  27930.,  62244.,
      103134., 119622., 136110., 98148.,  52842.,  55800.,  121136., 196264.,
      219400., 242536., 172592., 91832.,  93080.,  196976., 311944., 335080.,
      358216., 250992., 131672., 89970.,  188820., 296742., 314958., 333174.,
      232020., 121026., 74060.,  154552., 241604., 254324., 267044., 185144.,
      96172.,  44390.,  92252.,  143650., 150298., 156946., 108444., 56150.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      621.,   702.,   1006.,  1120.,  1490.,  1640.,  1715.,  1880.,  1940.,
      2120.,  1810.,  1960.,  1557.,  1674.,  1634.,  1784.,  2512.,  2720.,
      3570.,  3840.,  3970.,  4260.,  4370.,  4680.,  3936.,  4192.,  3290.,
      3488.,  3400.,  3640.,  5070.,  5400.,  7025.,  7450.,  7650.,  8100.,
      8275.,  8750.,  7290.,  7680.,  5980.,  6280.,  5815.,  6160.,  8430.,
      8900.,  11400., 12000., 12025., 12650., 12650., 13300., 10930., 11460.,
      8815.,  9220.,  8230.,  8680.,  11790., 12400., 15775., 16550., 16400.,
      17200., 17025., 17850., 14570., 15240., 11650., 12160., 10645., 11200.,
      15150., 15900., 20150., 21100., 20775., 21750., 21400., 22400., 18210.,
      19020., 14485., 15100., 12542., 13028., 17584., 18240., 23070., 23900.,
      23670., 24520., 24270., 25140., 20384., 21088., 16022., 16556., 12636.,
      13032., 17566., 18100., 22865., 23540., 23390., 24080., 23915., 24620.,
      19930., 20500., 15552., 15984., 7173.,  7758.,  10414., 11200., 14090.,
      15080., 14315., 15320., 14540., 15560., 12562., 13384., 10125., 10746.,
      13730., 14552., 19536., 20640., 25970., 27360., 26370., 27780., 26770.,
      28200., 22752., 23904., 18074., 18944., 22720., 23800., 31950., 33400.,
      42025., 43850., 42650., 44500., 43275., 45150., 36410., 37920., 28660.,
      29800., 25135., 26320., 35310., 36900., 46400., 48400., 47025., 49050.,
      47650., 49700., 40050., 41700., 31495., 32740., 27550., 28840., 38670.,
      40400., 50775., 52950., 51400., 53600., 52025., 54250., 43690., 45480.,
      34330., 35680., 29965., 31360., 42030., 43900., 55150., 57500., 55775.,
      58150., 56400., 58800., 47330., 49260., 37165., 38620., 31358., 32516.,
      43568., 45120., 56670., 58620., 57270., 59240., 57870., 59860., 48160.,
      49760., 37526., 38732., 29268., 30168., 40414., 41620., 52265., 53780.,
      52790., 54320., 53315., 54860., 44122., 45364., 34200., 35136., 13725.,
      14814., 19822., 21280., 26690., 28520., 26915., 28760., 27140., 29000.,
      23314., 24808., 18693., 19818., 25826., 27320., 36560., 38560., 48370.,
      50880., 48770., 51300., 49170., 51720., 41568., 43616., 32858., 34400.,
      42040., 43960., 58830., 61400., 77025., 80250., 77650., 80900., 78275.,
      81550., 65530., 68160., 51340., 53320., 44455., 46480., 62190., 64900.,
      81400., 84800., 82025., 85450., 82650., 86100., 69170., 71940., 54175.,
      56260., 46870., 49000., 65550., 68400., 85775., 89350., 86400., 90000.,
      87025., 90650., 72810., 75720., 57010., 59200., 49285., 51520., 68910.,
      71900., 90150., 93900., 90775., 94550., 91400., 95200., 76450., 79500.,
      59845., 62140., 50174., 52004., 69552., 72000., 90270., 93340., 90870.,
      93960., 91470., 94580., 75936., 78432., 59030., 60908., 45900., 47304.,
      63262., 65140., 81665., 84020., 82190., 84560., 82715., 85100., 68314.,
      70228., 52848., 54288.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,     2.,     5.,    8.,    14.,    20.,    26.,    32.,    38.,
      44.,    39.,    44.,   27.,   30.,    15.,    20.,    52.,    64.,
      115.,   136.,   157.,  178.,  199.,   220.,   176.,   192.,   111.,
      120.,   72.,    84.,   201.,  228.,   393.,   438.,   483.,   528.,
      573.,   618.,   471.,  504.,  282.,   300.,   202.,   224.,   512.,
      560.,   938.,   1016., 1094., 1172.,  1250.,  1328.,  984.,   1040.,
      570.,   600.,   422.,  444.,  992.,   1040.,  1718.,  1796.,  1874.,
      1952.,  2030.,  2108., 1544., 1600.,  870.,   900.,   591.,   612.,
      1317.,  1362.,  2184., 2256., 2328.,  2400.,  2472.,  2544.,  1815.,
      1866.,  993.,   1020., 597.,  614.,   1300.,  1336.,  2113.,  2170.,
      2227.,  2284.,  2341., 2398., 1688.,  1728.,  909.,   930.,   410.,
      420.,   881.,   902.,  1415., 1448.,  1481.,  1514.,  1547.,  1580.,
      1103.,  1126.,  588.,  600.,  13.,    26.,    53.,    80.,    122.,
      164.,   206.,   248.,  290.,  332.,   231.,   260.,   135.,   150.,
      159.,   188.,   388.,  448.,  691.,   784.,   877.,   970.,   1063.,
      1156.,  800.,   864.,  447.,  480.,   468.,   516.,   1065.,  1164.,
      1797.,  1950.,  2103., 2256., 2409.,  2562.,  1767.,  1872.,  966.,
      1020.,  970.,   1040., 2144., 2288.,  3530.,  3752.,  3974.,  4196.,
      4418.,  4640.,  3192., 3344., 1722.,  1800.,  1670.,  1740.,  3584.,
      3728.,  5750.,  5972., 6194., 6416.,  6638.,  6860.,  4712.,  4864.,
      2502.,  2580.,  1707., 1764., 3621.,  3738.,  5748.,  5928.,  6108.,
      6288.,  6468.,  6648., 4551., 4674.,  2397.,  2460.,  1461.,  1502.,
      3076.,  3160.,  4849., 4978., 5107.,  5236.,  5365.,  5494.,  3752.,
      3840.,  1965.,  2010., 902.,  924.,   1889.,  1934.,  2963.,  3032.,
      3101.,  3170.,  3239., 3308., 2255.,  2302.,  1176.,  1200.,  25.,
      50.,    101.,   152.,  230.,  308.,   386.,   464.,   542.,   620.,
      423.,   476.,   243.,  270.,  303.,   356.,   724.,   832.,   1267.,
      1432.,  1597.,  1762., 1927., 2092.,  1424.,  1536.,  783.,   840.,
      864.,   948.,   1929., 2100., 3201.,  3462.,  3723.,  3984.,  4245.,
      4506.,  3063.,  3240., 1650., 1740.,  1738.,  1856.,  3776.,  4016.,
      6122.,  6488.,  6854., 7220., 7586.,  7952.,  5400.,  5648.,  2874.,
      3000.,  2918.,  3036., 6176., 6416.,  9782.,  10148., 10514., 10880.,
      11246., 11612., 7880., 8128., 4134.,  4260.,  2823.,  2916.,  5925.,
      6114.,  9312.,  9600., 9888., 10176., 10464., 10752., 7287.,  7482.,
      3801.,  3900.,  2325., 2390., 4852.,  4984.,  7585.,  7786.,  7987.,
      8188.,  8389.,  8590., 5816., 5952.,  3021.,  3090.,  1394.,  1428.,
      2897.,  2966.,  4511., 4616., 4721.,  4826.,  4931.,  5036.,  3407.,
      3478.,  1764.,  1800.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4581.,   5211.,   7496.,   8384.,   11185.,  12355.,  12955.,  14245.,
      14725.,  16135.,  13808.,  14984.,  11925.,  12843.,  12352.,  13528.,
      19088.,  20720.,  27240.,  29360.,  30400.,  32680.,  33560.,  36000.,
      30320.,  32336.,  25408.,  26968.,  26045.,  27935.,  38960.,  41560.,
      54125.,  57475.,  59075.,  62625.,  64025.,  67775.,  56520.,  59600.,
      46445.,  48815.,  45155.,  47885.,  65560.,  69280.,  88775.,  93525.,
      93725.,  98675.,  98675.,  103825., 85360.,  89560.,  68915.,  72125.,
      64265.,  67835.,  92160.,  97000.,  123425., 129575., 128375., 134725.,
      133325., 139875., 114200., 119520., 91385.,  95435.,  83375.,  87785.,
      118760., 124720., 158075., 165625., 163025., 170775., 167975., 175925.,
      143040., 149480., 113855., 118745., 98704.,  102568., 138448., 143664.,
      181720., 188320., 186480., 193240., 191240., 198160., 160688., 166288.,
      126352., 130600., 99711.,  102861., 138656., 142904., 180535., 185905.,
      184705., 190195., 188875., 194485., 157448., 161984., 122895., 126333.,
      55989.,  60651.,  81416.,  87680.,  110305., 118195., 112075., 120085.,
      113845., 121975., 98480.,  105032., 79461.,  84411.,  107776., 114328.,
      153488., 162288., 204200., 215280., 207360., 218600., 210520., 221920.,
      179056., 188240., 142336., 149272., 178925., 187535., 251760., 263320.,
      331325., 345875., 336275., 351025., 341225., 356175., 287240., 299280.,
      226205., 235295., 198035., 207485., 278360., 291040., 365975., 381925.,
      370925., 387075., 375875., 392225., 316080., 329240., 248675., 258605.,
      217145., 227435., 304960., 318760., 400625., 417975., 405575., 423125.,
      410525., 428275., 344920., 359200., 271145., 281915., 236255., 247385.,
      331560., 346480., 435275., 454025., 440225., 459175., 445175., 464325.,
      373760., 389160., 293615., 305225., 247888., 257128., 344528., 356912.,
      448280., 463840., 453040., 468760., 457800., 473680., 381104., 393872.,
      297040., 306664., 231759., 238941., 320096., 329720., 414055., 426145.,
      418225., 430435., 422395., 434725., 349640., 359552., 271071., 278541.,
      107397., 116091., 155336., 166976., 209425., 224035., 211195., 225925.,
      212965., 227815., 183152., 195080., 146997., 155979., 203200., 215128.,
      287888., 303856., 381160., 401200., 384320., 404520., 387480., 407840.,
      327792., 344144., 259264., 271576., 331805., 347135., 464560., 485080.,
      608525., 634275., 613475., 639425., 618425., 644575., 517960., 538960.,
      405965., 421775., 350915., 367085., 491160., 512800., 643175., 670325.,
      648125., 675475., 653075., 680625., 546800., 568920., 428435., 445085.,
      370025., 387035., 517760., 540520., 677825., 706375., 682775., 711525.,
      687725., 716675., 575640., 598880., 450905., 468395., 389135., 406985.,
      544360., 568240., 712475., 742425., 717425., 747575., 722375., 752725.,
      604480., 628840., 473375., 491705., 397072., 411688., 550608., 570160.,
      714840., 739360., 719600., 744280., 724360., 749200., 601520., 621456.,
      467728., 482728., 363807., 375021., 501536., 516536., 647575., 666385.,
      651745., 670675., 655915., 674965., 541832., 557120., 419247., 430749.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    28.,    48.,    85.,    127.,   169.,   211.,   253.,
      295.,   272.,   308.,   193.,   215.,   88.,    124.,   340.,   428.,
      788.,   944.,   1100.,  1256.,  1412.,  1568.,  1276.,  1396.,  816.,
      884.,   489.,   579.,   1416.,  1620.,  2829.,  3171.,  3513.,  3855.,
      4197.,  4539.,  3492.,  3744.,  2109.,  2247.,  1448.,  1616.,  3736.,
      4104.,  6928.,  7528.,  8128.,  8728.,  9328.,  9928.,  7400.,  7832.,
      4312.,  4544.,  3128.,  3296.,  7416.,  7784.,  12928., 13528., 14128.,
      14728., 15328., 15928., 11720., 12152., 6632.,  6864.,  4503.,  4665.,
      10068., 10416., 16743., 17301., 17859., 18417., 18975., 19533., 13968.,
      14364., 7659.,  7869.,  4600.,  4732.,  10036., 10316., 16340., 16784.,
      17228., 17672., 18116., 18560., 13084., 13396., 7056.,  7220.,  3179.,
      3257.,  6840.,  7004.,  10999., 11257., 11515., 11773., 12031., 12289.,
      8588.,  8768.,  4583.,  4677.,  77.,    179.,   364.,   576.,   877.,
      1207.,  1537.,  1867.,  2197.,  2527.,  1760.,  1988.,  1033.,  1151.,
      1192.,  1420.,  2932.,  3404.,  5252.,  5984.,  6716.,  7448.,  8180.,
      8912.,  6172.,  6676.,  3456.,  3716.,  3585.,  3963.,  8184.,  8964.,
      13845., 15051., 16257., 17463., 18669., 19875., 13716., 14544., 7509.,
      7935.,  7496.,  8048.,  16600., 17736., 27376., 29128., 30880., 32632.,
      34384., 36136., 24872., 26072., 13432., 14048., 13016., 13568., 27960.,
      29096., 44896., 46648., 48400., 50152., 51904., 53656., 36872., 38072.,
      19592., 20208., 13359., 13809., 28356., 29280., 45039., 46461., 47883.,
      49305., 50727., 52149., 35712., 36684., 18819., 19317., 11464., 11788.,
      24148., 24812., 38084., 39104., 40124., 41144., 42164., 43184., 29500.,
      30196., 15456., 15812., 7091.,  7265.,  14856., 15212., 23311., 23857.,
      24403., 24949., 25495., 26041., 17756., 18128., 9263.,  9453.,  149.,
      347.,   700.,   1104.,  1669.,  2287.,  2905.,  3523.,  4141.,  4759.,
      3248.,  3668.,  1873.,  2087.,  2296.,  2716.,  5524.,  6380.,  9716.,
      11024., 12332., 13640., 14948., 16256., 11068., 11956., 6096.,  6548.,
      6681.,  7347.,  14952., 16308., 24861., 26931., 29001., 31071., 33141.,
      35211., 23940., 25344., 12909., 13623., 13544., 14480., 29464., 31368.,
      47824., 50728., 53632., 56536., 59440., 62344., 42344., 44312., 22552.,
      23552., 22904., 23840., 48504., 50408., 76864., 79768., 82672., 85576.,
      88480., 91384., 62024., 63992., 32552., 33552., 22215., 22953., 46644.,
      48144., 73335., 75621., 77907., 80193., 82479., 84765., 57456., 59004.,
      29979., 30765., 18328., 18844., 38260., 39308., 59828., 61424., 63020.,
      64616., 66212., 67808., 45916., 46996., 23856., 24404., 11003., 11273.,
      22872., 23420., 35623., 36457., 37291., 38125., 38959., 39793., 26924.,
      27488., 13943., 14229.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      35118.,   40086.,   57784.,   64792.,   86570.,   95810.,   100610.,
      110810.,  114650.,  125810.,  107800.,  117112.,  93294.,   100566.,
      95960.,   105272.,  148704.,  161632.,  212680.,  229480.,  237800.,
      255880.,  262920.,  282280.,  237920.,  253920.,  199640.,  212024.,
      203770.,  218770.,  305320.,  325960.,  424750.,  451350.,  464150.,
      492350.,  503550.,  533350.,  445000.,  469480.,  366010.,  384850.,
      355810.,  377530.,  517000.,  546600.,  700550.,  738350.,  739950.,
      779350.,  779350.,  820350.,  674600.,  708040.,  544930.,  570490.,
      507850.,  536290.,  728680.,  767240.,  976350.,  1025350., 1015750.,
      1066350., 1055150., 1107350., 904200.,  946600.,  723850.,  756130.,
      659890.,  695050.,  940360.,  987880.,  1252150., 1312350., 1291550.,
      1353350., 1330950., 1394350., 1133800., 1185160., 902770.,  941770.,
      783128.,  813944.,  1098720., 1140320., 1442440., 1495080., 1480360.,
      1534280., 1518280., 1573480., 1276000., 1320672., 1003544., 1037432.,
      792198.,  817326.,  1101784., 1135672., 1434770., 1477610., 1468010.,
      1511810., 1501250., 1546010., 1251640., 1287832., 977094.,  1004526.,
      442350.,  479574.,  643768.,  693784.,  872810.,  935810.,  886850.,
      950810.,  900890.,  965810.,  779800.,  832120.,  629550.,  669078.,
      853976.,  906296.,  1216736., 1287008., 1619400., 1707880., 1644520.,
      1734280., 1669640., 1760680., 1420640., 1493984., 1129688., 1185080.,
      1420090., 1488850., 1998760., 2091080., 2631150., 2747350., 2670550.,
      2788350., 2709950., 2829350., 2281800., 2377960., 1797370., 1869970.,
      1572130., 1647610., 2210440., 2311720., 2906950., 3034350., 2946350.,
      3075350., 2985750., 3116350., 2511400., 2616520., 1976290., 2055610.,
      1724170., 1806370., 2422120., 2532360., 3182750., 3321350., 3222150.,
      3362350., 3261550., 3403350., 2741000., 2855080., 2155210., 2241250.,
      1876210., 1965130., 2633800., 2753000., 3458550., 3608350., 3497950.,
      3649350., 3537350., 3690350., 2970600., 3093640., 2334130., 2426890.,
      1971224., 2045048., 2740192., 2839136., 3565960., 3690280., 3603880.,
      3729480., 3641800., 3768680., 3032160., 3134176., 2363672., 2440568.,
      1844550., 1901934., 2547928., 2624824., 3296210., 3392810., 3329450.,
      3427010., 3362690., 3461210., 2783800., 2863000., 2158470., 2218158.,
      849582.,  919062.,  1229752., 1322776., 1659050., 1775810., 1673090.,
      1790810., 1687130., 1805810., 1451800., 1547128., 1165806., 1237590.,
      1611992., 1707320., 2284768., 2412384., 3026120., 3186280., 3051240.,
      3212680., 3076360., 3239080., 2603360., 2734048., 2059736., 2158136.,
      2636410., 2758930., 3692200., 3856200., 4837550., 5043350., 4876950.,
      5084350., 4916350., 5125350., 4118600., 4286440., 3228730., 3355090.,
      2788450., 2917690., 3903880., 4076840., 5113350., 5330350., 5152750.,
      5371350., 5192150., 5412350., 4348200., 4525000., 3407650., 3540730.,
      2940490., 3076450., 4115560., 4297480., 5389150., 5617350., 5428550.,
      5658350., 5467950., 5699350., 4577800., 4763560., 3586570., 3726370.,
      3092530., 3235210., 4327240., 4518120., 5664950., 5904350., 5704350.,
      5945350., 5743750., 5986350., 4807400., 5002120., 3765490., 3912010.,
      3159320., 3276152., 4381664., 4537952., 5689480., 5885480., 5727400.,
      5924680., 5765320., 5963880., 4788320., 4947680., 3723800., 3843704.,
      2896902., 2986542., 3994072., 4113976., 5157650., 5308010., 5190890.,
      5342210., 5224130., 5376410., 4315960., 4438168., 3339846., 3431790.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     180.,    324.,    578.,    890.,    1202.,   1514.,
      1826.,   2138.,   2020.,   2292.,   1454.,   1622.,   580.,    852.,
      2424.,   3096.,   5788.,   6988.,   8188.,   9388.,   10588.,  11788.,
      9688.,   10616.,  6244.,   6772.,   3570.,   4266.,   10572.,  12156.,
      21390.,  24054.,  26718.,  29382.,  32046.,  34710.,  26844.,  28812.,
      16290.,  17370.,  10920.,  12232.,  28464.,  31344.,  53144.,  57848.,
      62552.,  67256.,  71960.,  76664.,  57328.,  60720.,  33512.,  35336.,
      24040.,  25352.,  57264.,  60144.,  100184., 104888., 109592., 114296.,
      119000., 123704., 91248.,  94640.,  51752.,  53576.,  35130.,  36402.,
      78684.,  81420.,  131046., 135438., 139830., 144222., 148614., 153006.,
      109548., 112668., 60138.,  61794.,  36100.,  37140.,  78840.,  81048.,
      128476., 131980., 135484., 138988., 142492., 145996., 103000., 105464.,
      55588.,  56884.,  25030.,  25646.,  53892.,  55188.,  86714.,  88754.,
      90794.,  92834.,  94874.,  96914.,  67764.,  69188.,  36182.,  36926.,
      510.,    1318.,   2676.,   4356.,   6626.,   9242.,   11858.,  14474.,
      17090.,  19706.,  13732.,  15540.,  8078.,   9014.,   9220.,   11028.,
      22776.,  26520.,  40924.,  46732.,  52540.,  58348.,  64156.,  69964.,
      48472.,  52472.,  27172.,  29236.,  28050.,  31050.,  64140.,  70332.,
      108654., 118230., 127806., 137382., 146958., 156534., 108060., 114636.,
      59202.,  62586.,  58920.,  63304.,  130608., 139632., 215576., 229496.,
      243416., 257336., 271256., 285176., 196336., 205872., 106088., 110984.,
      102760., 107144., 220848., 229872., 354776., 368696., 382616., 396536.,
      410456., 424376., 291696., 301232., 155048., 159944., 105690., 109266.,
      224412., 231756., 356550., 367854., 379158., 390462., 401766., 413070.,
      282924., 290652., 149130., 153090., 90820.,  93396.,  191352., 196632.,
      301852., 309964., 318076., 326188., 334300., 342412., 233944., 239480.,
      122596., 125428., 56230.,  57614.,  117828., 120660., 184922., 189266.,
      193610., 197954., 202298., 206642., 140916., 143876., 73526.,  75038.,
      990.,    2566.,   5172.,   8388.,   12674.,  17594.,  22514.,  27434.,
      32354.,  37274.,  25444.,  28788.,  14702.,  16406.,  17860.,  21204.,
      43128.,  49944.,  76060.,  86476.,  96892.,  107308., 117724., 128140.,
      87256.,  94328.,  48100.,  51700.,  52530.,  57834.,  117708., 128508.,
      195918., 212406., 228894., 245382., 261870., 278358., 189276., 200460.,
      102114., 107802., 106920., 114376., 232752., 247920., 378008., 401144.,
      424280., 447416., 470552., 493688., 335344., 351024., 178664., 186632.,
      181480., 188936., 384432., 399600., 609368., 632504., 655640., 678776.,
      701912., 725048., 492144., 507824., 258344., 266312., 176250., 182130.,
      370140., 382092., 582054., 600270., 618486., 636702., 654918., 673134.,
      456300., 468636., 238122., 244386., 145540., 149652., 303864., 312216.,
      475228., 487948., 500668., 513388., 526108., 538828., 364888., 373496.,
      189604., 193972., 87430.,  89582.,  181764., 186132., 283130., 289778.,
      296426., 303074., 309722., 316370., 214068., 218564., 110870., 113150.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1161.,   1242.,   1323.,   1404.,   1898.,   2012.,   2126.,   2240.,
      2830.,   2980.,   3130.,   3280.,   3265.,   3430.,   3595.,   3760.,
      3700.,   3880.,   4060.,   4240.,   3470.,   3620.,   3770.,   3920.,
      2997.,   3114.,   3231.,   3348.,   3118.,   3268.,   3418.,   3568.,
      4816.,   5024.,   5232.,   5440.,   6870.,   7140.,   7410.,   7680.,
      7650.,   7940.,   8230.,   8520.,   8430.,   8740.,   9050.,   9360.,
      7616.,   7872.,   8128.,   8384.,   6382.,   6580.,   6778.,   6976.,
      6560.,   6800.,   7040.,   7280.,   9810.,   10140.,  10470.,  10800.,
      13625.,  14050.,  14475.,  14900.,  14850.,  15300.,  15750.,  16200.,
      16075.,  16550.,  17025.,  17500.,  14190.,  14580.,  14970.,  15360.,
      11660.,  11960.,  12260.,  12560.,  11285.,  11630.,  11975.,  12320.,
      16390.,  16860.,  17330.,  17800.,  22200.,  22800.,  23400.,  24000.,
      23425.,  24050.,  24675.,  25300.,  24650.,  25300.,  25950.,  26600.,
      21330.,  21860.,  22390.,  22920.,  17225.,  17630.,  18035.,  18440.,
      16010.,  16460.,  16910.,  17360.,  22970.,  23580.,  24190.,  24800.,
      30775.,  31550.,  32325.,  33100.,  32000.,  32800.,  33600.,  34400.,
      33225.,  34050.,  34875.,  35700.,  28470.,  29140.,  29810.,  30480.,
      22790.,  23300.,  23810.,  24320.,  20735.,  21290.,  21845.,  22400.,
      29550.,  30300.,  31050.,  31800.,  39350.,  40300.,  41250.,  42200.,
      40575.,  41550.,  42525.,  43500.,  41800.,  42800.,  43800.,  44800.,
      35610.,  36420.,  37230.,  38040.,  28355.,  28970.,  29585.,  30200.,
      24598.,  25084.,  25570.,  26056.,  34512.,  35168.,  35824.,  36480.,
      45310.,  46140.,  46970.,  47800.,  46490.,  47340.,  48190.,  49040.,
      47670.,  48540.,  49410.,  50280.,  40064.,  40768.,  41472.,  42176.,
      31510.,  32044.,  32578.,  33112.,  24876.,  25272.,  25668.,  26064.,
      34598.,  35132.,  35666.,  36200.,  45055.,  45730.,  46405.,  47080.,
      46090.,  46780.,  47470.,  48160.,  47125.,  47830.,  48535.,  49240.,
      39290.,  39860.,  40430.,  41000.,  30672.,  31104.,  31536.,  31968.,
      13761.,  14346.,  14931.,  15516.,  20042.,  20828.,  21614.,  22400.,
      27190.,  28180.,  29170.,  30160.,  27625.,  28630.,  29635.,  30640.,
      28060.,  29080.,  30100.,  31120.,  24302.,  25124.,  25946.,  26768.,
      19629.,  20250.,  20871.,  21492.,  26638.,  27460.,  28282.,  29104.,
      37968.,  39072.,  40176.,  41280.,  50550.,  51940.,  53330.,  54720.,
      51330.,  52740.,  54150.,  55560.,  52110.,  53540.,  54970.,  56400.,
      44352.,  45504.,  46656.,  47808.,  35278.,  36148.,  37018.,  37888.,
      44360.,  45440.,  46520.,  47600.,  62450.,  63900.,  65350.,  66800.,
      82225.,  84050.,  85875.,  87700.,  83450.,  85300.,  87150.,  89000.,
      84675.,  86550.,  88425.,  90300.,  71310.,  72820.,  74330.,  75840.,
      56180.,  57320.,  58460.,  59600.,  49085.,  50270.,  51455.,  52640.,
      69030.,  70620.,  72210.,  73800.,  90800.,  92800.,  94800.,  96800.,
      92025.,  94050.,  96075.,  98100.,  93250.,  95300.,  97350.,  99400.,
      78450.,  80100.,  81750.,  83400.,  61745.,  62990.,  64235.,  65480.,
      53810.,  55100.,  56390.,  57680.,  75610.,  77340.,  79070.,  80800.,
      99375.,  101550., 103725., 105900., 100600., 102800., 105000., 107200.,
      101825., 104050., 106275., 108500., 85590.,  87380.,  89170.,  90960.,
      67310.,  68660.,  70010.,  71360.,  58535.,  59930.,  61325.,  62720.,
      82190.,  84060.,  85930.,  87800.,  107950., 110300., 112650., 115000.,
      109175., 111550., 113925., 116300., 110400., 112800., 115200., 117600.,
      92730.,  94660.,  96590.,  98520.,  72875.,  74330.,  75785.,  77240.,
      61558.,  62716.,  63874.,  65032.,  85584.,  87136.,  88688.,  90240.,
      111390., 113340., 115290., 117240., 112570., 114540., 116510., 118480.,
      113750., 115740., 117730., 119720., 94720.,  96320.,  97920.,  99520.,
      73846.,  75052.,  76258.,  77464.,  57636.,  58536.,  59436.,  60336.,
      79622.,  80828.,  82034.,  83240.,  103015., 104530., 106045., 107560.,
      104050., 105580., 107110., 108640., 105085., 106630., 108175., 109720.,
      87002.,  88244.,  89486.,  90728.,  67464.,  68400.,  69336.,  70272.,
      26361.,  27450.,  28539.,  29628.,  38186.,  39644.,  41102.,  42560.,
      51550.,  53380.,  55210.,  57040.,  51985.,  53830.,  55675.,  57520.,
      52420.,  54280.,  56140.,  58000.,  45134.,  46628.,  48122.,  49616.,
      36261.,  37386.,  38511.,  39636.,  50158.,  51652.,  53146.,  54640.,
      71120.,  73120.,  75120.,  77120.,  94230.,  96740.,  99250.,  101760.,
      95010.,  97540.,  100070., 102600., 95790.,  98340.,  100890., 103440.,
      81088.,  83136.,  85184.,  87232.,  64174.,  65716.,  67258.,  68800.,
      82160.,  84080.,  86000.,  87920.,  115090., 117660., 120230., 122800.,
      150825., 154050., 157275., 160500., 152050., 155300., 158550., 161800.,
      153275., 156550., 159825., 163100., 128430., 131060., 133690., 136320.,
      100700., 102680., 104660., 106640., 86885.,  88910.,  90935.,  92960.,
      121670., 124380., 127090., 129800., 159400., 162800., 166200., 169600.,
      160625., 164050., 167475., 170900., 161850., 165300., 168750., 172200.,
      135570., 138340., 141110., 143880., 106265., 108350., 110435., 112520.,
      91610.,  93740.,  95870.,  98000.,  128250., 131100., 133950., 136800.,
      167975., 171550., 175125., 178700., 169200., 172800., 176400., 180000.,
      170425., 174050., 177675., 181300., 142710., 145620., 148530., 151440.,
      111830., 114020., 116210., 118400., 96335.,  98570.,  100805., 103040.,
      134830., 137820., 140810., 143800., 176550., 180300., 184050., 187800.,
      177775., 181550., 185325., 189100., 179000., 182800., 186600., 190400.,
      149850., 152900., 155950., 159000., 117395., 119690., 121985., 124280.,
      98518.,  100348., 102178., 104008., 136656., 139104., 141552., 144000.,
      177470., 180540., 183610., 186680., 178650., 181740., 184830., 187920.,
      179830., 182940., 186050., 189160., 149376., 151872., 154368., 156864.,
      116182., 118060., 119938., 121816., 90396.,  91800.,  93204.,  94608.,
      124646., 126524., 128402., 130280., 160975., 163330., 165685., 168040.,
      162010., 164380., 166750., 169120., 163045., 165430., 167815., 170200.,
      134714., 136628., 138542., 140456., 104256., 105696., 107136., 108576.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,     2.,     3.,     4.,     7.,     10.,    13.,    16.,    22.,
      28.,    34.,    40.,    46.,    52.,    58.,    64.,    70.,    76.,
      82.,    88.,    73.,    78.,    83.,    88.,    51.,    54.,    57.,
      60.,    25.,    30.,    35.,    40.,    92.,    104.,   116.,   128.,
      209.,   230.,   251.,   272.,   293.,   314.,   335.,   356.,   377.,
      398.,   419.,   440.,   336.,   352.,   368.,   384.,   213.,   222.,
      231.,   240.,   132.,   144.,   156.,   168.,   375.,   402.,   429.,
      456.,   741.,   786.,   831.,   876.,   921.,   966.,   1011.,  1056.,
      1101.,  1146.,  1191.,  1236.,  909.,   942.,   975.,   1008.,  546.,
      564.,   582.,   600.,   382.,   404.,   426.,   448.,   976.,   1024.,
      1072.,  1120.,  1798.,  1876.,  1954.,  2032.,  2110.,  2188.,  2266.,
      2344.,  2422.,  2500.,  2578.,  2656.,  1912.,  1968.,  2024.,  2080.,
      1110.,  1140.,  1170.,  1200.,  822.,   844.,   866.,   888.,   1936.,
      1984.,  2032.,  2080.,  3358.,  3436.,  3514.,  3592.,  3670.,  3748.,
      3826.,  3904.,  3982.,  4060.,  4138.,  4216.,  3032.,  3088.,  3144.,
      3200.,  1710.,  1740.,  1770.,  1800.,  1161.,  1182.,  1203.,  1224.,
      2589.,  2634.,  2679.,  2724.,  4296.,  4368.,  4440.,  4512.,  4584.,
      4656.,  4728.,  4800.,  4872.,  4944.,  5016.,  5088.,  3579.,  3630.,
      3681.,  3732.,  1959.,  1986.,  2013.,  2040.,  1177.,  1194.,  1211.,
      1228.,  2564.,  2600.,  2636.,  2672.,  4169.,  4226.,  4283.,  4340.,
      4397.,  4454.,  4511.,  4568.,  4625.,  4682.,  4739.,  4796.,  3336.,
      3376.,  3416.,  3456.,  1797.,  1818.,  1839.,  1860.,  810.,   820.,
      830.,   840.,   1741.,  1762.,  1783.,  1804.,  2797.,  2830.,  2863.,
      2896.,  2929.,  2962.,  2995.,  3028.,  3061.,  3094.,  3127.,  3160.,
      2183.,  2206.,  2229.,  2252.,  1164.,  1176.,  1188.,  1200.,  13.,
      26.,    39.,    52.,    79.,    106.,   133.,   160.,   202.,   244.,
      286.,   328.,   370.,   412.,   454.,   496.,   538.,   580.,   622.,
      664.,   433.,   462.,   491.,   520.,   255.,   270.,   285.,   300.,
      289.,   318.,   347.,   376.,   716.,   776.,   836.,   896.,   1289.,
      1382.,  1475.,  1568.,  1661.,  1754.,  1847.,  1940.,  2033.,  2126.,
      2219.,  2312.,  1536.,  1600.,  1664.,  1728.,  861.,   894.,   927.,
      960.,   888.,   936.,   984.,   1032.,  2031.,  2130.,  2229.,  2328.,
      3441.,  3594.,  3747.,  3900.,  4053.,  4206.,  4359.,  4512.,  4665.,
      4818.,  4971.,  5124.,  3429.,  3534.,  3639.,  3744.,  1878.,  1932.,
      1986.,  2040.,  1870.,  1940.,  2010.,  2080.,  4144.,  4288.,  4432.,
      4576.,  6838.,  7060.,  7282.,  7504.,  7726.,  7948.,  8170.,  8392.,
      8614.,  8836.,  9058.,  9280.,  6232.,  6384.,  6536.,  6688.,  3366.,
      3444.,  3522.,  3600.,  3270.,  3340.,  3410.,  3480.,  7024.,  7168.,
      7312.,  7456.,  11278., 11500., 11722., 11944., 12166., 12388., 12610.,
      12832., 13054., 13276., 13498., 13720., 9272.,  9424.,  9576.,  9728.,
      4926.,  5004.,  5082.,  5160.,  3357.,  3414.,  3471.,  3528.,  7125.,
      7242.,  7359.,  7476.,  11316., 11496., 11676., 11856., 12036., 12216.,
      12396., 12576., 12756., 12936., 13116., 13296., 8979.,  9102.,  9225.,
      9348.,  4731.,  4794.,  4857.,  4920.,  2881.,  2922.,  2963.,  3004.,
      6068.,  6152.,  6236.,  6320.,  9569.,  9698.,  9827.,  9956.,  10085.,
      10214., 10343., 10472., 10601., 10730., 10859., 10988., 7416.,  7504.,
      7592.,  7680.,  3885.,  3930.,  3975.,  4020.,  1782.,  1804.,  1826.,
      1848.,  3733.,  3778.,  3823.,  3868.,  5857.,  5926.,  5995.,  6064.,
      6133.,  6202.,  6271.,  6340.,  6409.,  6478.,  6547.,  6616.,  4463.,
      4510.,  4557.,  4604.,  2328.,  2352.,  2376.,  2400.,  25.,    50.,
      75.,    100.,   151.,   202.,   253.,   304.,   382.,   460.,   538.,
      616.,   694.,   772.,   850.,   928.,   1006.,  1084.,  1162.,  1240.,
      793.,   846.,   899.,   952.,   459.,   486.,   513.,   540.,   553.,
      606.,   659.,   712.,   1340.,  1448.,  1556.,  1664.,  2369.,  2534.,
      2699.,  2864.,  3029.,  3194.,  3359.,  3524.,  3689.,  3854.,  4019.,
      4184.,  2736.,  2848.,  2960.,  3072.,  1509.,  1566.,  1623.,  1680.,
      1644.,  1728.,  1812.,  1896.,  3687.,  3858.,  4029.,  4200.,  6141.,
      6402.,  6663.,  6924.,  7185.,  7446.,  7707.,  7968.,  8229.,  8490.,
      8751.,  9012.,  5949.,  6126.,  6303.,  6480.,  3210.,  3300.,  3390.,
      3480.,  3358.,  3476.,  3594.,  3712.,  7312.,  7552.,  7792.,  8032.,
      11878., 12244., 12610., 12976., 13342., 13708., 14074., 14440., 14806.,
      15172., 15538., 15904., 10552., 10800., 11048., 11296., 5622.,  5748.,
      5874.,  6000.,  5718.,  5836.,  5954.,  6072.,  12112., 12352., 12592.,
      12832., 19198., 19564., 19930., 20296., 20662., 21028., 21394., 21760.,
      22126., 22492., 22858., 23224., 15512., 15760., 16008., 16256., 8142.,
      8268.,  8394.,  8520.,  5553.,  5646.,  5739.,  5832.,  11661., 11850.,
      12039., 12228., 18336., 18624., 18912., 19200., 19488., 19776., 20064.,
      20352., 20640., 20928., 21216., 21504., 14379., 14574., 14769., 14964.,
      7503.,  7602.,  7701.,  7800.,  4585.,  4650.,  4715.,  4780.,  9572.,
      9704.,  9836.,  9968.,  14969., 15170., 15371., 15572., 15773., 15974.,
      16175., 16376., 16577., 16778., 16979., 17180., 11496., 11632., 11768.,
      11904., 5973.,  6042.,  6111.,  6180.,  2754.,  2788.,  2822.,  2856.,
      5725.,  5794.,  5863.,  5932.,  8917.,  9022.,  9127.,  9232.,  9337.,
      9442.,  9547.,  9652.,  9757.,  9862.,  9967.,  10072., 6743.,  6814.,
      6885.,  6956.,  3492.,  3528.,  3564.,  3600.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8685.,    9315.,    9945.,    10575.,   14320.,   15208.,   16096.,
      16984.,   21485.,   22655.,   23825.,   24995.,   24935.,   26225.,
      27515.,   28805.,   28385.,   29795.,   31205.,   32615.,   26728.,
      27904.,   29080.,   30256.,   23157.,   24075.,   24993.,   25911.,
      23816.,   24992.,   26168.,   27344.,   36944.,   38576.,   40208.,
      41840.,   52880.,   55000.,   57120.,   59240.,   59080.,   61360.,
      63640.,   65920.,   65280.,   67720.,   70160.,   72600.,   59120.,
      61136.,   63152.,   65168.,   49640.,   51200.,   52760.,   54320.,
      50665.,   52555.,   54445.,   56335.,   75960.,   78560.,   81160.,
      83760.,   105725.,  109075.,  112425.,  115775.,  115475.,  119025.,
      122575.,  126125.,  125225.,  128975.,  132725.,  136475.,  110720.,
      113800.,  116880.,  119960.,  91105.,   93475.,   95845.,   98215.,
      88255.,   90985.,   93715.,   96445.,   128320.,  132040.,  135760.,
      139480.,  173975.,  178725.,  183475.,  188225.,  183725.,  188675.,
      193625.,  198575.,  193475.,  198625.,  203775.,  208925.,  167560.,
      171760.,  175960.,  180160.,  135415.,  138625.,  141835.,  145045.,
      125845.,  129415.,  132985.,  136555.,  180680.,  185520.,  190360.,
      195200.,  242225.,  248375.,  254525.,  260675.,  251975.,  258325.,
      264675.,  271025.,  261725.,  268275.,  274825.,  281375.,  224400.,
      229720.,  235040.,  240360.,  179725.,  183775.,  187825.,  191875.,
      163435.,  167845.,  172255.,  176665.,  233040.,  239000.,  244960.,
      250920.,  310475.,  318025.,  325575.,  333125.,  320225.,  327975.,
      335725.,  343475.,  329975.,  337925.,  345875.,  353825.,  281240.,
      287680.,  294120.,  300560.,  224035.,  228925.,  233815.,  238705.,
      194504.,  198368.,  202232.,  206096.,  272976.,  278192.,  283408.,
      288624.,  358480.,  365080.,  371680.,  378280.,  367880.,  374640.,
      381400.,  388160.,  377280.,  384200.,  391120.,  398040.,  317168.,
      322768.,  328368.,  333968.,  249512.,  253760.,  258008.,  262256.,
      197055.,  200205.,  203355.,  206505.,  274120.,  278368.,  282616.,
      286864.,  357035.,  362405.,  367775.,  373145.,  365285.,  370775.,
      376265.,  381755.,  373535.,  379145.,  384755.,  390365.,  311488.,
      316024.,  320560.,  325096.,  243207.,  246645.,  250083.,  253521.,
      108477.,  113139.,  117801.,  122463.,  158128.,  164392.,  170656.,
      176920.,  214685.,  222575.,  230465.,  238355.,  218135.,  226145.,
      234155.,  242165.,  221585.,  229715.,  237845.,  245975.,  192040.,
      198592.,  205144.,  211696.,  155205.,  160155.,  165105.,  170055.,
      210632.,  217184.,  223736.,  230288.,  300368.,  309168.,  317968.,
      326768.,  400080.,  411160.,  422240.,  433320.,  406280.,  417520.,
      428760.,  440000.,  412480.,  423880.,  435280.,  446680.,  351216.,
      360400.,  369584.,  378768.,  279464.,  286400.,  293336.,  300272.,
      351385.,  359995.,  368605.,  377215.,  494840.,  506400.,  517960.,
      529520.,  651725.,  666275.,  680825.,  695375.,  661475.,  676225.,
      690975.,  705725.,  671225.,  686175.,  701125.,  716075.,  565440.,
      577480.,  589520.,  601560.,  445585.,  454675.,  463765.,  472855.,
      388975.,  398425.,  407875.,  417325.,  547200.,  559880.,  572560.,
      585240.,  719975.,  735925.,  751875.,  767825.,  729725.,  745875.,
      762025.,  778175.,  739475.,  755825.,  772175.,  788525.,  622280.,
      635440.,  648600.,  661760.,  489895.,  499825.,  509755.,  519685.,
      426565.,  436855.,  447145.,  457435.,  599560.,  613360.,  627160.,
      640960.,  788225.,  805575.,  822925.,  840275.,  797975.,  815525.,
      833075.,  850625.,  807725.,  825475.,  843225.,  860975.,  679120.,
      693400.,  707680.,  721960.,  534205.,  544975.,  555745.,  566515.,
      464155.,  475285.,  486415.,  497545.,  651920.,  666840.,  681760.,
      696680.,  856475.,  875225.,  893975.,  912725.,  866225.,  885175.,
      904125.,  923075.,  875975.,  895125.,  914275.,  933425.,  735960.,
      751360.,  766760.,  782160.,  578515.,  590125.,  601735.,  613345.,
      488840.,  498080.,  507320.,  516560.,  679760.,  692144.,  704528.,
      716912.,  884880.,  900440.,  916000.,  931560.,  894280.,  910000.,
      925720.,  941440.,  903680.,  919560.,  935440.,  951320.,  752624.,
      765392.,  778160.,  790928.,  586856.,  596480.,  606104.,  615728.,
      458127.,  465309.,  472491.,  479673.,  632968.,  642592.,  652216.,
      661840.,  819035.,  831125.,  843215.,  855305.,  827285.,  839495.,
      851705.,  863915.,  835535.,  847865.,  860195.,  872525.,  691840.,
      701752.,  711664.,  721576.,  536535.,  544005.,  551475.,  558945.,
      208269.,  216963.,  225657.,  234351.,  301936.,  313576.,  325216.,
      336856.,  407885.,  422495.,  437105.,  451715.,  411335.,  426065.,
      440795.,  455525.,  414785.,  429635.,  444485.,  459335.,  357352.,
      369280.,  381208.,  393136.,  287253.,  296235.,  305217.,  314199.,
      397448.,  409376.,  421304.,  433232.,  563792.,  579760.,  595728.,
      611696.,  747280.,  767320.,  787360.,  807400.,  753480.,  773680.,
      793880.,  814080.,  759680.,  780040.,  800400.,  820760.,  643312.,
      659664.,  676016.,  692368.,  509288.,  521600.,  533912.,  546224.,
      652105.,  667435.,  682765.,  698095.,  913720.,  934240.,  954760.,
      975280.,  1197725., 1223475., 1249225., 1274975., 1207475., 1233425.,
      1259375., 1285325., 1217225., 1243375., 1269525., 1295675., 1020160.,
      1041160., 1062160., 1083160., 800065.,  815875.,  831685.,  847495.,
      689695.,  705865.,  722035.,  738205.,  966080.,  987720.,  1009360.,
      1031000., 1265975., 1293125., 1320275., 1347425., 1275725., 1303075.,
      1330425., 1357775., 1285475., 1313025., 1340575., 1368125., 1077000.,
      1099120., 1121240., 1143360., 844375.,  861025.,  877675.,  894325.,
      727285.,  744295.,  761305.,  778315.,  1018440., 1041200., 1063960.,
      1086720., 1334225., 1362775., 1391325., 1419875., 1343975., 1372725.,
      1401475., 1430225., 1353725., 1382675., 1411625., 1440575., 1133840.,
      1157080., 1180320., 1203560., 888685.,  906175.,  923665.,  941155.,
      764875.,  782725.,  800575.,  818425.,  1070800., 1094680., 1118560.,
      1142440., 1402475., 1432425., 1462375., 1492325., 1412225., 1442375.,
      1472525., 1502675., 1421975., 1452325., 1482675., 1513025., 1190680.,
      1215040., 1239400., 1263760., 932995.,  951325.,  969655.,  987985.,
      783176.,  797792.,  812408.,  827024.,  1086544., 1106096., 1125648.,
      1145200., 1411280., 1435800., 1460320., 1484840., 1420680., 1445360.,
      1470040., 1494720., 1430080., 1454920., 1479760., 1504600., 1188080.,
      1208016., 1227952., 1247888., 924200.,  939200.,  954200.,  969200.,
      719199.,  730413.,  741627.,  752841.,  991816.,  1006816., 1021816.,
      1036816., 1281035., 1299845., 1318655., 1337465., 1289285., 1308215.,
      1327145., 1346075., 1297535., 1316585., 1335635., 1354685., 1072192.,
      1087480., 1102768., 1118056., 829863.,  841365.,  852867.,  864369.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,      11.,     17.,     23.,     40.,     60.,     80.,     100.,
      137.,    179.,    221.,    263.,    305.,    347.,    389.,    431.,
      473.,    515.,    557.,    599.,    516.,    552.,    588.,    624.,
      369.,    391.,    413.,    435.,    148.,    184.,    220.,    256.,
      612.,    700.,    788.,    876.,    1456.,   1612.,   1768.,   1924.,
      2080.,   2236.,   2392.,   2548.,   2704.,   2860.,   3016.,   3172.,
      2460.,   2580.,   2700.,   2820.,   1580.,   1648.,   1716.,   1784.,
      909.,    999.,    1089.,   1179.,   2676.,   2880.,   3084.,   3288.,
      5397.,   5739.,   6081.,   6423.,   6765.,   7107.,   7449.,   7791.,
      8133.,   8475.,   8817.,   9159.,   6792.,   7044.,   7296.,   7548.,
      4113.,   4251.,   4389.,   4527.,   2768.,   2936.,   3104.,   3272.,
      7192.,   7560.,   7928.,   8296.,   13400.,  14000.,  14600.,  15200.,
      15800.,  16400.,  17000.,  17600.,  18200.,  18800.,  19400.,  20000.,
      14472.,  14904.,  15336.,  15768.,  8448.,   8680.,   8912.,   9144.,
      6128.,   6296.,   6464.,   6632.,   14552.,  14920.,  15288.,  15656.,
      25400.,  26000.,  26600.,  27200.,  27800.,  28400.,  29000.,  29600.,
      30200.,  30800.,  31400.,  32000.,  23112.,  23544.,  23976.,  24408.,
      13088.,  13320.,  13552.,  13784.,  8883.,   9045.,   9207.,   9369.,
      19872.,  20220.,  20568.,  20916.,  33063.,  33621.,  34179.,  34737.,
      35295.,  35853.,  36411.,  36969.,  37527.,  38085.,  38643.,  39201.,
      27636.,  28032.,  28428.,  28824.,  15159.,  15369.,  15579.,  15789.,
      9100.,   9232.,   9364.,   9496.,   19860.,  20140.,  20420.,  20700.,
      32344.,  32788.,  33232.,  33676.,  34120.,  34564.,  35008.,  35452.,
      35896.,  36340.,  36784.,  37228.,  25932.,  26244.,  26556.,  26868.,
      13988.,  14152.,  14316.,  14480.,  6299.,   6377.,   6455.,   6533.,
      13556.,  13720.,  13884.,  14048.,  21803.,  22061.,  22319.,  22577.,
      22835.,  23093.,  23351.,  23609.,  23867.,  24125.,  24383.,  24641.,
      17040.,  17220.,  17400.,  17580.,  9095.,   9189.,   9283.,   9377.,
      77.,     179.,    281.,    383.,    568.,    780.,    992.,    1204.,
      1505.,   1835.,   2165.,   2495.,   2825.,   3155.,   3485.,   3815.,
      4145.,   4475.,   4805.,   5135.,   3348.,   3576.,   3804.,   4032.,
      1977.,   2095.,   2213.,   2331.,   2212.,   2440.,   2668.,   2896.,
      5508.,   5980.,   6452.,   6924.,   9952.,   10684.,  11416.,  12148.,
      12880.,  13612.,  14344.,  15076.,  15808.,  16540.,  17272.,  18004.,
      11964.,  12468.,  12972.,  13476.,  6716.,   6976.,   7236.,   7496.,
      6885.,   7263.,   7641.,   8019.,   15780.,  16560.,  17340.,  18120.,
      26781.,  27987.,  29193.,  30399.,  31605.,  32811.,  34017.,  35223.,
      36429.,  37635.,  38841.,  40047.,  26808.,  27636.,  28464.,  29292.,
      14697.,  15123.,  15549.,  15975.,  14576.,  15128.,  15680.,  16232.,
      32344.,  33480.,  34616.,  35752.,  53432.,  55184.,  56936.,  58688.,
      60440.,  62192.,  63944.,  65696.,  67448.,  69200.,  70952.,  72704.,
      48840.,  50040.,  51240.,  52440.,  26400.,  27016.,  27632.,  28248.,
      25616.,  26168.,  26720.,  27272.,  55064.,  56200.,  57336.,  58472.,
      88472.,  90224.,  91976.,  93728.,  95480.,  97232.,  98984.,  100736.,
      102488., 104240., 105992., 107744., 72840.,  74040.,  75240.,  76440.,
      38720.,  39336.,  39952.,  40568.,  26379.,  26829.,  27279.,  27729.,
      56016.,  56940.,  57864.,  58788.,  89007.,  90429.,  91851.,  93273.,
      94695.,  96117.,  97539.,  98961.,  100383., 101805., 103227., 104649.,
      70692.,  71664.,  72636.,  73608.,  37263.,  37761.,  38259.,  38757.,
      22684.,  23008.,  23332.,  23656.,  47796.,  48460.,  49124.,  49788.,
      75400.,  76420.,  77440.,  78460.,  79480.,  80500.,  81520.,  82540.,
      83560.,  84580.,  85600.,  86620.,  58476.,  59172.,  59868.,  60564.,
      30644.,  31000.,  31356.,  31712.,  14051.,  14225.,  14399.,  14573.,
      29444.,  29800.,  30156.,  30512.,  46211.,  46757.,  47303.,  47849.,
      48395.,  48941.,  49487.,  50033.,  50579.,  51125.,  51671.,  52217.,
      35232.,  35604.,  35976.,  36348.,  18383.,  18573.,  18763.,  18953.,
      149.,    347.,    545.,    743.,    1096.,   1500.,   1904.,   2308.,
      2873.,   3491.,   4109.,   4727.,   5345.,   5963.,   6581.,   7199.,
      7817.,   8435.,   9053.,   9671.,   6180.,   6600.,   7020.,   7440.,
      3585.,   3799.,   4013.,   4227.,   4276.,   4696.,   5116.,   5536.,
      10404.,  11260.,  12116.,  12972.,  18448.,  19756.,  21064.,  22372.,
      23680.,  24988.,  26296.,  27604.,  28912.,  30220.,  31528.,  32836.,
      21468.,  22356.,  23244.,  24132.,  11852.,  12304.,  12756.,  13208.,
      12861.,  13527.,  14193.,  14859.,  28884.,  30240.,  31596.,  32952.,
      48165.,  50235.,  52305.,  54375.,  56445.,  58515.,  60585.,  62655.,
      64725.,  66795.,  68865.,  70935.,  46824.,  48228.,  49632.,  51036.,
      25281.,  25995.,  26709.,  27423.,  26384.,  27320.,  28256.,  29192.,
      57496.,  59400.,  61304.,  63208.,  93464.,  96368.,  99272.,  102176.,
      105080., 107984., 110888., 113792., 116696., 119600., 122504., 125408.,
      83208.,  85176.,  87144.,  89112.,  44352.,  45352.,  46352.,  47352.,
      45104.,  46040.,  46976.,  47912.,  95576.,  97480.,  99384.,  101288.,
      151544., 154448., 157352., 160256., 163160., 166064., 168968., 171872.,
      174776., 177680., 180584., 183488., 122568., 124536., 126504., 128472.,
      64352.,  65352.,  66352.,  67352.,  43875.,  44613.,  45351.,  46089.,
      92160.,  93660.,  95160.,  96660.,  144951., 147237., 149523., 151809.,
      154095., 156381., 158667., 160953., 163239., 165525., 167811., 170097.,
      113748., 115296., 116844., 118392., 59367.,  60153.,  60939.,  61725.,
      36268.,  36784.,  37300.,  37816.,  75732.,  76780.,  77828.,  78876.,
      118456., 120052., 121648., 123244., 124840., 126436., 128032., 129628.,
      131224., 132820., 134416., 136012., 91020.,  92100.,  93180.,  94260.,
      47300.,  47848.,  48396.,  48944.,  21803.,  22073.,  22343.,  22613.,
      45332.,  45880.,  46428.,  46976.,  70619.,  71453.,  72287.,  73121.,
      73955.,  74789.,  75623.,  76457.,  77291.,  78125.,  78959.,  79793.,
      53424.,  53988.,  54552.,  55116.,  27671.,  27957.,  28243.,  28529.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67086.,    72054.,    77022.,    81990.,    111128.,   118136.,
      125144.,   132152.,   167290.,   176530.,   185770.,   195010.,
      194770.,   204970.,   215170.,   225370.,   222250.,   233410.,
      244570.,   255730.,   209720.,   219032.,   228344.,   237656.,
      181998.,   189270.,   196542.,   203814.,   186040.,   195352.,
      204664.,   213976.,   289248.,   302176.,   315104.,   328032.,
      414760.,   431560.,   448360.,   465160.,   464200.,   482280.,
      500360.,   518440.,   513640.,   533000.,   552360.,   571720.,
      465760.,   481760.,   497760.,   513760.,   391480.,   403864.,
      416248.,   428632.,   398090.,   413090.,   428090.,   443090.,
      597640.,   618280.,   638920.,   659560.,   832750.,   859350.,
      885950.,   912550.,   910550.,   938750.,   966950.,   995150.,
      988350.,   1018150.,  1047950.,  1077750.,  874600.,   899080.,
      923560.,   948040.,   720170.,   739010.,   757850.,   776690.,
      697970.,   719690.,   741410.,   763130.,   1015400.,  1045000.,
      1074600.,  1104200.,  1377350.,  1415150.,  1452950.,  1490750.,
      1455150.,  1494550.,  1533950.,  1573350.,  1532950.,  1573950.,
      1614950.,  1655950.,  1328200.,  1361640.,  1395080.,  1428520.,
      1073810.,  1099370.,  1124930.,  1150490.,  997850.,   1026290.,
      1054730.,  1083170.,  1433160.,  1471720.,  1510280.,  1548840.,
      1921950.,  1970950.,  2019950.,  2068950.,  1999750.,  2050350.,
      2100950.,  2151550.,  2077550.,  2129750.,  2181950.,  2234150.,
      1781800.,  1824200.,  1866600.,  1909000.,  1427450.,  1459730.,
      1492010.,  1524290.,  1297730.,  1332890.,  1368050.,  1403210.,
      1850920.,  1898440.,  1945960.,  1993480.,  2466550.,  2526750.,
      2586950.,  2647150.,  2544350.,  2606150.,  2667950.,  2729750.,
      2622150.,  2685550.,  2748950.,  2812350.,  2235400.,  2286760.,
      2338120.,  2389480.,  1781090.,  1820090.,  1859090.,  1898090.,
      1546936.,  1577752.,  1608568.,  1639384.,  2171360.,  2212960.,
      2254560.,  2296160.,  2851880.,  2904520.,  2957160.,  3009800.,
      2926920.,  2980840.,  3034760.,  3088680.,  3001960.,  3057160.,
      3112360.,  3167560.,  2524000.,  2568672.,  2613344.,  2658016.,
      1985848.,  2019736.,  2053624.,  2087512.,  1568646.,  1593774.,
      1618902.,  1644030.,  2182328.,  2216216.,  2250104.,  2283992.,
      2842690.,  2885530.,  2928370.,  2971210.,  2908570.,  2952370.,
      2996170.,  3039970.,  2974450.,  3019210.,  3063970.,  3108730.,
      2480600.,  2516792.,  2552984.,  2589176.,  1936998.,  1964430.,
      1991862.,  2019294.,  861390.,   898614.,   935838.,   973062.,
      1256216.,  1306232.,  1356248.,  1406264.,  1706170.,  1769170.,
      1832170.,  1895170.,  1733650.,  1797610.,  1861570.,  1925530.,
      1761130.,  1826050.,  1890970.,  1955890.,  1526840.,  1579160.,
      1631480.,  1683800.,  1234350.,  1273878.,  1313406.,  1352934.,
      1675192.,  1727512.,  1779832.,  1832152.,  2389472.,  2459744.,
      2530016.,  2600288.,  3183400.,  3271880.,  3360360.,  3448840.,
      3232840.,  3322600.,  3412360.,  3502120.,  3282280.,  3373320.,
      3464360.,  3555400.,  2795360.,  2868704.,  2942048.,  3015392.,
      2224696.,  2280088.,  2335480.,  2390872.,  2797130.,  2865890.,
      2934650.,  3003410.,  3939720.,  4032040.,  4124360.,  4216680.,
      5189550.,  5305750.,  5421950.,  5538150.,  5267350.,  5385150.,
      5502950.,  5620750.,  5345150.,  5464550.,  5583950.,  5703350.,
      4503400.,  4599560.,  4695720.,  4791880.,  3549290.,  3621890.,
      3694490.,  3767090.,  3097010.,  3172490.,  3247970.,  3323450.,
      4357480.,  4458760.,  4560040.,  4661320.,  5734150.,  5861550.,
      5988950.,  6116350.,  5811950.,  5940950.,  6069950.,  6198950.,
      5889750.,  6020350.,  6150950.,  6281550.,  4957000.,  5062120.,
      5167240.,  5272360.,  3902930.,  3982250.,  4061570.,  4140890.,
      3396890.,  3479090.,  3561290.,  3643490.,  4775240.,  4885480.,
      4995720.,  5105960.,  6278750.,  6417350.,  6555950.,  6694550.,
      6356550.,  6496750.,  6636950.,  6777150.,  6434350.,  6576150.,
      6717950.,  6859750.,  5410600.,  5524680.,  5638760.,  5752840.,
      4256570.,  4342610.,  4428650.,  4514690.,  3696770.,  3785690.,
      3874610.,  3963530.,  5193000.,  5312200.,  5431400.,  5550600.,
      6823350.,  6973150.,  7122950.,  7272750.,  6901150.,  7052550.,
      7203950.,  7355350.,  6978950.,  7131950.,  7284950.,  7437950.,
      5864200.,  5987240.,  6110280.,  6233320.,  4610210.,  4702970.,
      4795730.,  4888490.,  3896248.,  3970072.,  4043896.,  4117720.,
      5418464.,  5517408.,  5616352.,  5715296.,  7054120.,  7178440.,
      7302760.,  7427080.,  7129160.,  7254760.,  7380360.,  7505960.,
      7204200.,  7331080.,  7457960.,  7584840.,  6000480.,  6102496.,
      6204512.,  6306528.,  4679224.,  4756120.,  4833016.,  4909912.,
      3653190.,  3710574.,  3767958.,  3825342.,  5047736.,  5124632.,
      5201528.,  5278424.,  6531970.,  6628570.,  6725170.,  6821770.,
      6597850.,  6695410.,  6792970.,  6890530.,  6663730.,  6762250.,
      6860770.,  6959290.,  5518040.,  5597240.,  5676440.,  5755640.,
      4279590.,  4339278.,  4398966.,  4458654.,  1655694.,  1725174.,
      1794654.,  1864134.,  2401304.,  2494328.,  2587352.,  2680376.,
      3245050.,  3361810.,  3478570.,  3595330.,  3272530.,  3390250.,
      3507970.,  3625690.,  3300010.,  3418690.,  3537370.,  3656050.,
      2843960.,  2939288.,  3034616.,  3129944.,  2286702.,  2358486.,
      2430270.,  2502054.,  3164344.,  3259672.,  3355000.,  3450328.,
      4489696.,  4617312.,  4744928.,  4872544.,  5952040.,  6112200.,
      6272360.,  6432520.,  6001480.,  6162920.,  6324360.,  6485800.,
      6050920.,  6213640.,  6376360.,  6539080.,  5124960.,  5255648.,
      5386336.,  5517024.,  4057912.,  4156312.,  4254712.,  4353112.,
      5196170.,  5318690.,  5441210.,  5563730.,  7281800.,  7445800.,
      7609800.,  7773800.,  9546350.,  9752150.,  9957950.,  10163750.,
      9624150.,  9831550.,  10038950., 10246350., 9701950.,  9910950.,
      10119950., 10328950., 8132200.,  8300040.,  8467880.,  8635720.,
      6378410.,  6504770.,  6631130.,  6757490.,  5496050.,  5625290.,
      5754530.,  5883770.,  7699560.,  7872520.,  8045480.,  8218440.,
      10090950., 10307950., 10524950., 10741950., 10168750., 10387350.,
      10605950., 10824550., 10246550., 10466750., 10686950., 10907150.,
      8585800.,  8762600.,  8939400.,  9116200.,  6732050.,  6865130.,
      6998210.,  7131290.,  5795930.,  5931890.,  6067850.,  6203810.,
      8117320.,  8299240.,  8481160.,  8663080.,  10635550., 10863750.,
      11091950., 11320150., 10713350., 10943150., 11172950., 11402750.,
      10791150., 11022550., 11253950., 11485350., 9039400.,  9225160.,
      9410920.,  9596680.,  7085690.,  7225490.,  7365290.,  7505090.,
      6095810.,  6238490.,  6381170.,  6523850.,  8535080.,  8725960.,
      8916840.,  9107720.,  11180150., 11419550., 11658950., 11898350.,
      11257950., 11498950., 11739950., 11980950., 11335750., 11578350.,
      11820950., 12063550., 9493000.,  9687720.,  9882440.,  10077160.,
      7439330.,  7585850.,  7732370.,  7878890.,  6245560.,  6362392.,
      6479224.,  6596056.,  8665568.,  8821856.,  8978144.,  9134432.,
      11256360., 11452360., 11648360., 11844360., 11331400., 11528680.,
      11725960., 11923240., 11406440., 11605000., 11803560., 12002120.,
      9476960.,  9636320.,  9795680.,  9955040.,  7372600.,  7492504.,
      7612408.,  7732312.,  5737734.,  5827374.,  5917014.,  6006654.,
      7913144.,  8033048.,  8152952.,  8272856.,  10221250., 10371610.,
      10521970., 10672330., 10287130., 10438450., 10589770., 10741090.,
      10353010., 10505290., 10657570., 10809850., 8555480.,  8677688.,
      8799896.,  8922104.,  6622182.,  6714126.,  6806070.,  6898014.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,      70.,      110.,     150.,     260.,     404.,     548.,
      692.,     946.,     1258.,    1570.,    1882.,    2194.,    2506.,
      2818.,    3130.,    3442.,    3754.,    4066.,    4378.,    3860.,
      4132.,    4404.,    4676.,    2798.,    2966.,    3134.,    3302.,
      980.,     1252.,    1524.,    1796.,    4408.,    5080.,    5752.,
      6424.,    10796.,   11996.,   13196.,   14396.,   15596.,   16796.,
      17996.,   19196.,   20396.,   21596.,   22796.,   23996.,   18776.,
      19704.,   20632.,   21560.,   12148.,   12676.,   13204.,   13732.,
      6690.,    7386.,    8082.,    8778.,    20124.,   21708.,   23292.,
      24876.,   41070.,   43734.,   46398.,   49062.,   51726.,   54390.,
      57054.,   59718.,   62382.,   65046.,   67710.,   70374.,   52428.,
      54396.,   56364.,   58332.,   31890.,   32970.,   34050.,   35130.,
      21000.,   22312.,   23624.,   24936.,   55088.,   57968.,   60848.,
      63728.,   103288.,  107992.,  112696.,  117400.,  122104.,  126808.,
      131512.,  136216.,  140920.,  145624.,  150328.,  155032.,  112496.,
      115888.,  119280.,  122672.,  65864.,   67688.,   69512.,   71336.,
      47240.,   48552.,   49864.,   51176.,   112688.,  115568.,  118448.,
      121328.,  197368.,  202072.,  206776.,  211480.,  216184.,  220888.,
      225592.,  230296.,  235000.,  239704.,  244408.,  249112.,  180336.,
      183728.,  187120.,  190512.,  102344.,  104168.,  105992.,  107816.,
      69450.,   70722.,   71994.,   73266.,   155628.,  158364.,  161100.,
      163836.,  259302.,  263694.,  268086.,  272478.,  276870.,  281262.,
      285654.,  290046.,  294438.,  298830.,  303222.,  307614.,  217116.,
      220236.,  223356.,  226476.,  119226.,  120882.,  122538.,  124194.,
      71540.,   72580.,   73620.,   74660.,   156280.,  158488.,  160696.,
      162904.,  254732.,  258236.,  261740.,  265244.,  268748.,  272252.,
      275756.,  279260.,  282764.,  286268.,  289772.,  293276.,  204440.,
      206904.,  209368.,  211832.,  110356.,  111652.,  112948.,  114244.,
      49670.,   50286.,   50902.,   51518.,   106964.,  108260.,  109556.,
      110852.,  172138.,  174178.,  176218.,  178258.,  180298.,  182338.,
      184378.,  186418.,  188458.,  190498.,  192538.,  194578.,  134628.,
      136052.,  137476.,  138900.,  71894.,   72638.,   73382.,   74126.,
      510.,     1318.,    2126.,    2934.,    4292.,    5972.,    7652.,
      9332.,    11602.,   14218.,   16834.,   19450.,   22066.,   24682.,
      27298.,   29914.,   32530.,   35146.,   37762.,   40378.,   26324.,
      28132.,   29940.,   31748.,   15566.,   16502.,   17438.,   18374.,
      17300.,   19108.,   20916.,   22724.,   43192.,   46936.,   50680.,
      54424.,   78188.,   83996.,   89804.,   95612.,   101420.,  107228.,
      113036.,  118844.,  124652.,  130460.,  136268.,  142076.,  94424.,
      98424.,   102424.,  106424.,  53044.,   55108.,   57172.,   59236.,
      54210.,   57210.,   60210.,   63210.,   124380.,  130572.,  136764.,
      142956.,  211278.,  220854.,  230430.,  240006.,  249582.,  259158.,
      268734.,  278310.,  287886.,  297462.,  307038.,  316614.,  211980.,
      218556.,  225132.,  231708.,  116274.,  119658.,  123042.,  126426.,
      115080.,  119464.,  123848.,  128232.,  255536.,  264560.,  273584.,
      282608.,  422392.,  436312.,  450232.,  464152.,  478072.,  491992.,
      505912.,  519832.,  533752.,  547672.,  561592.,  575512.,  386672.,
      396208.,  405744.,  415280.,  209096.,  213992.,  218888.,  223784.,
      202760.,  207144.,  211528.,  215912.,  436016.,  445040.,  454064.,
      463088.,  700792.,  714712.,  728632.,  742552.,  756472.,  770392.,
      784312.,  798232.,  812152.,  826072.,  839992.,  853912.,  577392.,
      586928.,  596464.,  606000.,  307016.,  311912.,  316808.,  321704.,
      209130.,  212706.,  216282.,  219858.,  444204.,  451548.,  458892.,
      466236.,  705990.,  717294.,  728598.,  739902.,  751206.,  762510.,
      773814.,  785118.,  796422.,  807726.,  819030.,  830334.,  560988.,
      568716.,  576444.,  584172.,  295770.,  299730.,  303690.,  307650.,
      180020.,  182596.,  185172.,  187748.,  379384.,  384664.,  389944.,
      395224.,  598604.,  606716.,  614828.,  622940.,  631052.,  639164.,
      647276.,  655388.,  663500.,  671612.,  679724.,  687836.,  464408.,
      469944.,  475480.,  481016.,  243412.,  246244.,  249076.,  251908.,
      111590.,  112974.,  114358.,  115742.,  233876.,  236708.,  239540.,
      242372.,  367114.,  371458.,  375802.,  380146.,  384490.,  388834.,
      393178.,  397522.,  401866.,  406210.,  410554.,  414898.,  279972.,
      282932.,  285892.,  288852.,  146102.,  147614.,  149126.,  150638.,
      990.,     2566.,    4142.,    5718.,    8324.,    11540.,   14756.,
      17972.,   22258.,   27178.,   32098.,   37018.,   41938.,   46858.,
      51778.,   56698.,   61618.,   66538.,   71458.,   76378.,   48788.,
      52132.,   55476.,   58820.,   28334.,   30038.,   31742.,   33446.,
      33620.,   36964.,   40308.,   43652.,   81976.,   88792.,   95608.,
      102424.,  145580.,  155996.,  166412.,  176828.,  187244.,  197660.,
      208076.,  218492.,  228908.,  239324.,  249740.,  260156.,  170072.,
      177144.,  184216.,  191288.,  93940.,   97540.,   101140.,  104740.,
      101730.,  107034.,  112338.,  117642.,  228636.,  239436.,  250236.,
      261036.,  381486.,  397974.,  414462.,  430950.,  447438.,  463926.,
      480414.,  496902.,  513390.,  529878.,  546366.,  562854.,  371532.,
      382716.,  393900.,  405084.,  200658.,  206346.,  212034.,  217722.,
      209160.,  216616.,  224072.,  231528.,  455984.,  471152.,  486320.,
      501488.,  741496.,  764632.,  787768.,  810904.,  834040.,  857176.,
      880312.,  903448.,  926584.,  949720.,  972856.,  995992.,  660848.,
      676528.,  692208.,  707888.,  352328.,  360296.,  368264.,  376232.,
      358280.,  365736.,  373192.,  380648.,  759344.,  774512.,  789680.,
      804848.,  1204216., 1227352., 1250488., 1273624., 1296760., 1319896.,
      1343032., 1366168., 1389304., 1412440., 1435576., 1458712., 974448.,
      990128.,  1005808., 1021488., 511688.,  519656.,  527624.,  535592.,
      348810.,  354690.,  360570.,  366450.,  732780.,  744732.,  756684.,
      768636.,  1152678., 1170894., 1189110., 1207326., 1225542., 1243758.,
      1261974., 1280190., 1298406., 1316622., 1334838., 1353054., 904860.,
      917196.,  929532.,  941868.,  472314.,  478578.,  484842.,  491106.,
      288500.,  292612.,  296724.,  300836.,  602488.,  610840.,  619192.,
      627544.,  942476.,  955196.,  967916.,  980636.,  993356.,  1006076.,
      1018796., 1031516., 1044236., 1056956., 1069676., 1082396., 724376.,
      732984.,  741592.,  750200.,  376468.,  380836.,  385204.,  389572.,
      173510.,  175662.,  177814.,  179966.,  360788.,  365156.,  369524.,
      373892.,  562090.,  568738.,  575386.,  582034.,  588682.,  595330.,
      601978.,  608626.,  615274.,  621922.,  628570.,  635218.,  425316.,
      429812.,  434308.,  438804.,  220310.,  222590.,  224870.,  227150.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      384.,   610.,   890.,   1010.,  1130.,  1250.,  1144.,  969.,   988.,
      1500.,  2110.,  2320.,  2530.,  2740.,  2436.,  2014.,  2030.,  3000.,
      4125.,  4450.,  4775.,  5100.,  4450.,  3620.,  3470.,  5000.,  6725.,
      7050.,  7375.,  7700.,  6610.,  5300.,  4910.,  7000.,  9325.,  9650.,
      9975.,  10300., 8770.,  6980.,  6350.,  9000.,  11925., 12250., 12575.,
      12900., 10930., 8660.,  7396.,  10340., 13530., 13840., 14150., 14460.,
      12108., 9490.,  7404.,  10270., 13340., 13610., 13880., 14150., 11764.,
      9159.,  4416.,  6370.,  8570.,  8690.,  8810.,  8930.,  7672.,  6153.,
      8284.,  11740., 15550., 15760., 15970., 16180., 13700., 10846., 13550.,
      19000., 24925., 25250., 25575., 25900., 21730., 17060., 14990., 21000.,
      27525., 27850., 28175., 28500., 23890., 18740., 16430., 23000., 30125.,
      30450., 30775., 31100., 26050., 20420., 17870., 25000., 32725., 33050.,
      33375., 33700., 28210., 22100., 18532., 25700., 33370., 33680., 33990.,
      34300., 28492., 22162., 17196., 23710., 30620., 30890., 31160., 31430.,
      25972., 20103., 8448.,  12130., 16250., 16370., 16490., 16610., 14200.,
      11337., 15580., 21980., 28990., 29200., 29410., 29620., 24964., 19678.,
      25070., 35000., 45725., 46050., 46375., 46700., 39010., 30500., 26510.,
      37000., 48325., 48650., 48975., 49300., 41170., 32180., 27950., 39000.,
      50925., 51250., 51575., 51900., 43330., 33860., 29390., 41000., 53525.,
      53850., 54175., 54500., 45490., 35540., 29668., 41060., 53210., 53520.,
      53830., 54140., 44876., 34834., 26988., 37150., 47900., 48170., 48440.,
      48710., 40180., 31047.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    10.,   20.,   30.,   34.,   31.,   20.,   11.,   35.,
      74.,   130.,  166.,  161.,  133.,  80.,   50.,   133.,  252.,  410.,
      488.,  441.,  346.,  200.,  138.,  338.,  604.,  940.,  1076., 934.,
      710.,  400.,  278.,  638.,  1084., 1620., 1756., 1474., 1090., 600.,
      392.,  859.,  1404., 2030., 2156., 1755., 1264., 680.,  397.,  853.,
      1370., 1950., 2050., 1643., 1167., 620.,  273.,  580.,  922.,  1300.,
      1358., 1078., 759.,  400.,  17.,   52.,   106.,  180.,  254.,  226.,
      175.,  100.,  123.,  291.,  506.,  770.,  934.,  785.,  581.,  320.,
      338.,  757.,  1260., 1850., 2120., 1737., 1258., 680.,  682.,  1490.,
      2428., 3500., 3892., 3142., 2246., 1200., 1142., 2430., 3868., 5460.,
      5852., 4642., 3266., 1720., 1160., 2443., 3852., 5390., 5708., 4491.,
      3136., 1640., 989.,  2069., 3242., 4510., 4738., 3707., 2575., 1340.,
      609.,  1268., 1978., 2740., 2862., 2230., 1543., 800.,  33.,   100.,
      202.,  340.,  478.,  418.,  319.,  180.,  235.,  547.,  938.,  1410.,
      1702., 1409., 1029., 560.,  626.,  1381., 2268., 3290., 3752., 3033.,
      2170., 1160., 1226., 2642., 4252., 6060., 6708., 5350., 3782., 2000.,
      2006., 4222., 6652., 9300., 9948., 7810., 5442., 2840., 1928., 4027.,
      6300., 8750., 9260., 7227., 5008., 2600., 1581., 3285., 5114., 7070.,
      7426., 5771., 3983., 2060., 945.,  1956., 3034., 4180., 4366., 3382.,
      2327., 1200.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2775.,   4460.,   6565.,   7495.,   8425.,   9355.,   8612.,   7329.,
      7352.,   11232.,  15880.,  17520.,  19160.,  20800.,  18560.,  15392.,
      15355.,  22780.,  31425.,  33975.,  36525.,  39075.,  34180.,  27865.,
      26635.,  38460.,  51825.,  54375.,  56925.,  59475.,  51140.,  41065.,
      37915.,  54140.,  72225.,  74775.,  77325.,  79875.,  68100.,  54265.,
      49195.,  69820.,  92625.,  95175.,  97725.,  100275., 85060.,  67465.,
      57728.,  80768.,  105760., 108200., 110640., 113080., 94752.,  74312.,
      58035.,  80540.,  104665., 106795., 108925., 111055., 92372.,  71949.,
      33879.,  49004.,  66085.,  67015.,  67945.,  68875.,  59300.,  47649.,
      64184.,  91104.,  120840., 122480., 124120., 125760., 106624., 84512.,
      105595., 148220., 194625., 197175., 199725., 202275., 169860., 133465.,
      116875., 163900., 215025., 217575., 220125., 222675., 186820., 146665.,
      128155., 179580., 235425., 237975., 240525., 243075., 203780., 159865.,
      139435., 195260., 255825., 258375., 260925., 263475., 220740., 173065.,
      145280., 201600., 261920., 264360., 266800., 269240., 223776., 174152.,
      135219., 186524., 240985., 243115., 245245., 247375., 204500., 158349.,
      64983.,  93548.,  125605., 126535., 127465., 128395., 109988., 87969.,
      121016., 170976., 225800., 227440., 229080., 230720., 194688., 153632.,
      195835., 273660., 357825., 360375., 362925., 365475., 305540., 239065.,
      207115., 289340., 378225., 380775., 383325., 385875., 322500., 252265.,
      218395., 305020., 398625., 401175., 403725., 406275., 339460., 265465.,
      229675., 320700., 419025., 421575., 424125., 426675., 356420., 278665.,
      232832., 322432., 418080., 420520., 422960., 425400., 352800., 273992.,
      212403., 292508., 377305., 379435., 381565., 383695., 316628., 244749.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     22.,    59.,    124.,   196.,   233.,   218.,   143.,   64.,
      224.,   496.,   896.,   1168.,  1156.,  968.,   588.,   337.,   926.,
      1791.,  2956.,  3556.,  3249.,  2570.,  1495.,  984.,   2448.,  4424.,
      6944.,  8000.,  6992.,  5344.,  3024.,  2064.,  4768.,  8144.,  12224.,
      13280., 11192., 8304.,  4584.,  2989.,  6566.,  10755., 15580., 16564.,
      13509., 9746.,  5251.,  3060.,  6584.,  10588., 15088., 15872., 12736.,
      9056.,  4816.,  2117.,  4502.,  7163.,  10108., 10564., 8393.,  5914.,
      3119.,  101.,   342.,   731.,   1276.,  1860.,  1673.,  1306.,  751.,
      896.,   2144.,  3760.,  5760.,  7056.,  5956.,  4424.,  2444.,  2545.,
      5726.,  9567.,  14092., 16228., 13329., 9674.,  5239.,  5208.,  11408.,
      18632., 26912., 30016., 24272., 17376., 9296.,  8848.,  18848., 30032.,
      42432., 45536., 36152., 25456., 13416., 9037.,  19046., 30051., 42076.,
      44596., 35109., 24530., 12835., 7732.,  16184., 25372., 35312., 37120.,
      29056., 20192., 10512., 4773.,  9942.,  15515., 21500., 22468., 17513.,
      12122., 6287.,  197.,   662.,   1403.,  2428.,  3524.,  3113.,  2394.,
      1359.,  1728.,  4064.,  7024.,  10624., 12944., 10756., 7880.,  4300.,
      4753.,  10526., 17343., 25228., 28900., 23409., 16778., 8983.,  9432.,
      20368., 32840., 46880., 52032., 41552., 29408., 15568., 15632., 32928.,
      51920., 72640., 77792., 61112., 42608., 22248., 15085., 31526., 49347.,
      68572., 72628., 56709., 39314., 20419., 12404., 25784., 40156., 55536.,
      58368., 45376., 31328., 16208., 7429.,  15382., 23867., 32892., 34372.,
      26633., 18330., 9455.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21030.,   34024.,   50330.,   57650.,   64970.,   72290.,   66760.,
      56958.,   56632.,   86816.,   123080.,  136040.,  149000.,  161960.,
      144800.,  120280.,  119330.,  177400.,  245150.,  265350.,  285550.,
      305750.,  267800.,  218570.,  208610.,  301560.,  406750.,  426950.,
      447150.,  467350.,  402200.,  323210.,  297890.,  425720.,  568350.,
      588550.,  608750.,  628950.,  536600.,  427850.,  387170.,  549880.,
      729950.,  750150.,  770350.,  790550.,  671000.,  532490.,  456088.,
      638368.,  836200.,  855560.,  874920.,  894280.,  749600.,  588088.,
      459510.,  637864.,  829130.,  846050.,  862970.,  879890.,  732040.,
      570318.,  265254.,  384232.,  518810.,  526130.,  533450.,  540770.,
      466120.,  374910.,  505144.,  717600.,  952520.,  965480.,  978440.,
      991400.,  841120.,  667096.,  833570.,  1170680., 1537950., 1558150.,
      1578350., 1598550., 1343000., 1055690., 922850.,  1294840., 1699550.,
      1719750., 1739950., 1760150., 1477400., 1160330., 1012130., 1419000.,
      1861150., 1881350., 1901550., 1921750., 1611800., 1264970., 1101410.,
      1543160., 2022750., 2042950., 2063150., 2083350., 1746200., 1369610.,
      1150360., 1596832., 2075240., 2094600., 2113960., 2133320., 1773600.,
      1380664., 1072374., 1479592., 1912010., 1928930., 1945850., 1962770.,
      1622920., 1256910., 509478.,  734440.,  987290.,  994610.,  1001930.,
      1009250., 865480.,  692862.,  953656.,  1348384., 1781960., 1794920.,
      1807880., 1820840., 1537440., 1213912., 1547810., 2163960., 2830750.,
      2850950., 2871150., 2891350., 2418200., 1892810., 1637090., 2288120.,
      2992350., 3012550., 3032750., 3052950., 2552600., 1997450., 1726370.,
      2412280., 3153950., 3174150., 3194350., 3214550., 2687000., 2102090.,
      1815650., 2536440., 3315550., 3335750., 3355950., 3376150., 2821400.,
      2206730., 1844632., 2555296., 3314280., 3333640., 3353000., 3372360.,
      2797600., 2173240., 1685238., 2321320., 2994890., 3011810., 3028730.,
      3045650., 2513800., 1943502.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     140.,    394.,    856.,    1400.,   1714.,   1628.,   1078.,
      420.,    1576.,   3596.,   6608.,   8720.,   8732.,   7368.,   4500.,
      2450.,   6868.,   13446.,  22376.,  27080.,  24894.,  19780.,  11546.,
      7400.,   18576.,  33784.,  53280.,  61600.,  54040.,  41424.,  23496.,
      15880.,  36816.,  63064.,  94880.,  103200., 87160.,  64784.,  35816.,
      23330.,  51316.,  84150.,  122024., 129800., 105966., 76516.,  41258.,
      24020.,  51720.,  83228.,  118672., 124880., 100268., 71336.,  37956.,
      16670.,  35468.,  56458.,  79704.,  83320.,  66226.,  46684.,  24630.,
      670.,    2444.,   5386.,   9560.,   14200.,  12850.,  10076.,  5814.,
      6820.,   16424.,  28940.,  44496.,  54800.,  46364.,  34504.,  19092.,
      19730.,  44500.,  74502.,  109928., 126920., 104382., 75844.,  41114.,
      40680.,  89232.,  145912., 210976., 235680., 190744., 136656., 73160.,
      69640.,  148432., 236632., 334496., 359200., 285304., 200976., 105960.,
      71330.,  150388., 237366., 332456., 352520., 277614., 194020., 101546.,
      61140.,  128008., 200732., 279440., 293840., 230060., 159912., 83268.,
      37790.,  78732.,  122890., 170328., 178040., 138802., 96092.,  49846.,
      1310.,   4748.,   10378.,  18264.,  27000.,  23986.,  18524.,  10550.,
      13220.,  31272.,  54284.,  82384.,  100880., 83996.,  61640.,  33684.,
      37010.,  82132.,  135558., 197480., 226760., 183870., 131908., 70682.,
      73960.,  159888., 258040., 368672., 409760., 327448., 231888., 122824.,
      123400., 260048., 410200., 574112., 615200., 483448., 337168., 176104.,
      119330., 249460., 390582., 542888., 575240., 449262., 311524., 161834.,
      98260.,  204296., 318236., 440208., 462800., 359852., 248488., 128580.,
      58910.,  121996., 189322., 260952., 272760., 211378., 145500., 75062.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      678.,    768.,    1094.,   1220.,   1615.,   1780.,   1840.,   2020.,
      2065.,   2260.,   2290.,   2500.,   2114.,   2288.,   1803.,   1938.,
      1808.,   1976.,   2768.,   3000.,   3920.,   4220.,   4320.,   4640.,
      4720.,   5060.,   5120.,   5480.,   4576.,   4872.,   3800.,   4028.,
      3790.,   4060.,   5630.,   6000.,   7775.,   8250.,   8400.,   8900.,
      9025.,   9550.,   9650.,   10200.,  8450.,   8900.,   6895.,   7240.,
      6550.,   6940.,   9470.,   10000.,  12775.,  13450.,  13400.,  14100.,
      14025.,  14750.,  14650.,  15400.,  12610.,  13220.,  10135.,  10600.,
      9310.,   9820.,   13310.,  14000.,  17775.,  18650.,  18400.,  19300.,
      19025.,  19950.,  19650.,  20600.,  16770.,  17540.,  13375.,  13960.,
      12070.,  12700.,  17150.,  18000.,  22775.,  23850.,  23400.,  24500.,
      24025.,  25150.,  24650.,  25800.,  20930.,  21860.,  16615.,  17320.,
      14240.,  14792.,  19936.,  20680.,  26120.,  27060.,  26720.,  27680.,
      27320.,  28300.,  27920.,  28920.,  23408.,  24216.,  18368.,  18980.,
      14358.,  14808.,  19934.,  20540.,  25915.,  26680.,  26440.,  27220.,
      26965.,  27760.,  27490.,  28300.,  22874.,  23528.,  17823.,  18318.,
      8166.,   8832.,   11846.,  12740.,  16015.,  17140.,  16240.,  17380.,
      16465.,  17620.,  16690.,  17860.,  14402.,  15344.,  11595.,  12306.,
      15632.,  16568.,  22224.,  23480.,  29520.,  31100.,  29920.,  31520.,
      30320.,  31940.,  30720.,  32360.,  26080.,  27400.,  20696.,  21692.,
      25870.,  27100.,  36350.,  38000.,  47775.,  49850.,  48400.,  50500.,
      49025.,  51150.,  49650.,  51800.,  41730.,  43460.,  32815.,  34120.,
      28630.,  29980.,  40190.,  42000.,  52775.,  55050.,  53400.,  55700.,
      54025.,  56350.,  54650.,  57000.,  45890.,  47780.,  36055.,  37480.,
      31390.,  32860.,  44030.,  46000.,  57775.,  60250.,  58400.,  60900.,
      59025.,  61550.,  59650.,  62200.,  50050.,  52100.,  39295.,  40840.,
      34150.,  35740.,  47870.,  50000.,  62775.,  65450.,  63400.,  66100.,
      64025.,  66750.,  64650.,  67400.,  54210.,  56420.,  42535.,  44200.,
      35744.,  37064.,  49632.,  51400.,  64520.,  66740.,  65120.,  67360.,
      65720.,  67980.,  66320.,  68600.,  55152.,  56984.,  42944.,  44324.,
      33366.,  34392.,  46046.,  47420.,  59515.,  61240.,  60040.,  61780.,
      60565.,  62320.,  61090.,  62860.,  50522.,  51944.,  39135.,  40206.,
      15654.,  16896.,  22598.,  24260.,  30415.,  32500.,  30640.,  32740.,
      30865.,  32980.,  31090.,  33220.,  26690.,  28400.,  21387.,  22674.,
      29456.,  31160.,  41680.,  43960.,  55120.,  57980.,  55520.,  58400.,
      55920.,  58820.,  56320.,  59240.,  47584.,  49928.,  37592.,  39356.,
      47950.,  50140.,  67070.,  70000.,  87775.,  91450.,  88400.,  92100.,
      89025.,  92750.,  89650.,  93400.,  75010.,  78020.,  58735.,  61000.,
      50710.,  53020.,  70910.,  74000.,  92775.,  96650.,  93400.,  97300.,
      94025.,  97950.,  94650.,  98600.,  79170.,  82340.,  61975.,  64360.,
      53470.,  55900.,  74750.,  78000.,  97775.,  101850., 98400.,  102500.,
      99025.,  103150., 99650.,  103800., 83330.,  86660.,  65215.,  67720.,
      56230.,  58780.,  78590.,  82000.,  102775., 107050., 103400., 107700.,
      104025., 108350., 104650., 109000., 87490.,  90980.,  68455.,  71080.,
      57248.,  59336.,  79328.,  82120.,  102920., 106420., 103520., 107040.,
      104120., 107660., 104720., 108280., 86896.,  89752.,  67520.,  69668.,
      52374.,  53976.,  72158.,  74300.,  93115.,  95800.,  93640.,  96340.,
      94165.,  96880.,  94690.,  97420.,  78170.,  80360.,  60447.,  62094.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,     2.,     5.,     8.,     14.,    20.,    30.,    40.,    50.,
      60.,    59.,    68.,    55.,    62.,    36.,    40.,    16.,    22.,
      56.,    70.,    124.,   148.,   224.,   260.,   296.,   332.,   292.,
      322.,   244.,   266.,   148.,   160.,   85.,    100.,   233.,   266.,
      450.,   504.,   742.,   820.,   898.,   976.,   819.,   882.,   647.,
      692.,   376.,   400.,   248.,   276.,   616.,   676.,   1112.,  1208.,
      1744.,  1880.,  2016.,  2152.,  1760.,  1868.,  1344.,  1420.,  760.,
      800.,   528.,   556.,   1216.,  1276.,  2072.,  2168.,  3104.,  3240.,
      3376.,  3512.,  2840.,  2948.,  2104.,  2180.,  1160.,  1200.,  757.,
      784.,   1661.,  1718.,  2718.,  2808.,  3934.,  4060.,  4186.,  4312.,
      3411.,  3510.,  2459.,  2528.,  1324.,  1360.,  772.,   794.,   1660.,
      1706.,  2668.,  2740.,  3800.,  3900.,  4000.,  4100.,  3208.,  3286.,
      2280.,  2334.,  1212.,  1240.,  533.,   546.,   1133.,  1160.,  1802.,
      1844.,  2542.,  2600.,  2658.,  2716.,  2111.,  2156.,  1487.,  1518.,
      784.,   800.,   17.,    34.,    69.,    104.,   158.,   212.,   286.,
      360.,   434.,   508.,   395.,   452.,   311.,   350.,   180.,   200.,
      208.,   246.,   504.,   582.,   892.,   1012.,  1376.,  1540.,  1704.,
      1868.,  1444.,  1570.,  1076.,  1162.,  596.,   640.,   613.,   676.,
      1385.,  1514.,  2322.,  2520.,  3430.,  3700.,  3970.,  4240.,  3267.,
      3474.,  2375.,  2516.,  1288.,  1360.,  1272.,  1364.,  2792.,  2980.,
      4568.,  4856.,  6608.,  7000.,  7392.,  7784.,  5984.,  6284.,  4288.,
      4492.,  2296.,  2400.,  2192.,  2284.,  4672.,  4860.,  7448.,  7736.,
      10528., 10920., 11312., 11704., 8984.,  9284.,  6328.,  6532.,  3336.,
      3440.,  2245.,  2320.,  4733.,  4886.,  7470.,  7704.,  10462., 10780.,
      11098., 11416., 8739.,  8982.,  6107.,  6272.,  3196.,  3280.,  1924.,
      1978.,  4028.,  4138.,  6316.,  6484.,  8792.,  9020.,  9248.,  9476.,
      7240.,  7414.,  5032.,  5150.,  2620.,  2680.,  1189.,  1218.,  2477.,
      2536.,  3866.,  3956.,  5358.,  5480.,  5602.,  5724.,  4367.,  4460.,
      3023.,  3086.,  1568.,  1600.,  33.,    66.,    133.,   200.,   302.,
      404.,   542.,   680.,   818.,   956.,   731.,   836.,   567.,   638.,
      324.,   360.,   400.,   470.,   952.,   1094.,  1660.,  1876.,  2528.,
      2820.,  3112.,  3404.,  2596.,  2818.,  1908.,  2058.,  1044.,  1120.,
      1141.,  1252.,  2537.,  2762.,  4194.,  4536.,  6118.,  6580.,  7042.,
      7504.,  5715.,  6066.,  4103.,  4340.,  2200.,  2320.,  2296.,  2452.,
      4968.,  5284.,  8024.,  8504.,  11472., 12120., 12768., 13416., 10208.,
      10700., 7232.,  7564.,  3832.,  4000.,  3856.,  4012.,  8128.,  8444.,
      12824., 13304., 17952., 18600., 19248., 19896., 15128., 15620., 10552.,
      10884., 5512.,  5680.,  3733.,  3856.,  7805.,  8054.,  12222., 12600.,
      16990., 17500., 18010., 18520., 14067., 14454., 9755.,  10016., 5068.,
      5200.,  3076.,  3162.,  6396.,  6570.,  9964.,  10228., 13784., 14140.,
      14496., 14852., 11272., 11542., 7784.,  7966.,  4028.,  4120.,  1845.,
      1890.,  3821.,  3912.,  5930.,  6068.,  8174.,  8360.,  8546.,  8732.,
      6623.,  6764.,  4559.,  4654.,  2352.,  2400.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5019.,   5721.,   8176.,   9160.,   12155.,  13445.,  13925.,  15335.,
      15695.,  17225.,  17465.,  19115.,  16192.,  17560.,  13857.,  14919.,
      13708.,  15028.,  21088.,  22912.,  29980.,  32340.,  33140.,  35660.,
      36300.,  38980.,  39460.,  42300.,  35360.,  37696.,  29428.,  31228.,
      29105.,  31235.,  43360.,  46280.,  60025.,  63775.,  64975.,  68925.,
      69925.,  74075.,  74875.,  79225.,  65680.,  69240.,  53675.,  56405.,
      50945.,  54035.,  73760.,  77960.,  99625.,  104975., 104575., 110125.,
      109525., 115275., 114475., 120425., 98640.,  103480., 79355.,  83045.,
      72785.,  76835.,  104160., 109640., 139225., 146175., 144175., 151325.,
      149125., 156475., 154075., 161625., 131600., 137720., 105035., 109685.,
      94625.,  99635.,  134560., 141320., 178825., 187375., 183775., 192525.,
      188725., 197675., 193675., 202825., 164560., 171960., 130715., 136325.,
      112156., 116548., 157088., 163008., 205900., 213380., 210660., 218300.,
      215420., 223220., 220180., 228140., 184672., 191104., 144964., 149836.,
      113379., 116961., 157456., 162280., 204755., 210845., 208925., 215135.,
      213095., 219425., 217265., 223715., 180832., 186040., 140937., 144879.,
      63771.,  69081.,  92656.,  99784.,  125435., 134405., 127205., 136295.,
      128975., 138185., 130745., 140075., 112960., 120472., 91041.,  96711.,
      122764., 130228., 174688., 184704., 232220., 244820., 235380., 248140.,
      238540., 251460., 241700., 254780., 205344., 215872., 163060., 171004.,
      203825., 213635., 286560., 299720., 376825., 393375., 381775., 398525.,
      386725., 403675., 391675., 408825., 329360., 343160., 259115., 269525.,
      225665., 236435., 316960., 331400., 416425., 434575., 421375., 439725.,
      426325., 444875., 431275., 450025., 362320., 377400., 284795., 296165.,
      247505., 259235., 347360., 363080., 456025., 475775., 460975., 480925.,
      465925., 486075., 470875., 491225., 395280., 411640., 310475., 322805.,
      269345., 282035., 377760., 394760., 495625., 516975., 500575., 522125.,
      505525., 527275., 510475., 532425., 428240., 445880., 336155., 349445.,
      282652., 293188., 392608., 406720., 510540., 528260., 515300., 533180.,
      520060., 538100., 524820., 543020., 436576., 451200., 340036., 351052.,
      264291., 272481., 364816., 375784., 471635., 485405., 475805., 489695.,
      479975., 493985., 484145., 498275., 400480., 411832., 310281., 318831.,
      122523., 132441., 177136., 190408., 238715., 255365., 240485., 257255.,
      242255., 259145., 244025., 261035., 209728., 223384., 168225., 178503.,
      231820., 245428., 328288., 346496., 434460., 457300., 437620., 460620.,
      440780., 463940., 443940., 467260., 375328., 394048., 296692., 310780.,
      378545., 396035., 529760., 553160., 693625., 722975., 698575., 728125.,
      703525., 733275., 708475., 738425., 593040., 617080., 464555., 482645.,
      400385., 418835., 560160., 584840., 733225., 764175., 738175., 769325.,
      743125., 774475., 748075., 779625., 626000., 651320., 490235., 509285.,
      422225., 441635., 590560., 616520., 772825., 805375., 777775., 810525.,
      782725., 815675., 787675., 820825., 658960., 685560., 515915., 535925.,
      444065., 464435., 620960., 648200., 812425., 846575., 817375., 851725.,
      822325., 856875., 827275., 862025., 691920., 719800., 541595., 562565.,
      453148., 469828., 628128., 650432., 815180., 843140., 819940., 848060.,
      824700., 852980., 829460., 857900., 688480., 711296., 535108., 552268.,
      415203., 428001., 572176., 589288., 738515., 759965., 742685., 764255.,
      746855., 768545., 751025., 772835., 620128., 637624., 479625., 492783.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,      11.,     28.,     48.,     85.,     127.,    192.,    264.,
      336.,    408.,    415.,    481.,    396.,    448.,    263.,    293.,
      94.,     138.,    368.,    472.,    854.,    1034.,   1584.,   1856.,
      2128.,   2400.,   2138.,   2366.,   1808.,   1976.,   1106.,   1198.,
      587.,    701.,    1660.,   1912.,   3267.,   3681.,   5456.,   6056.,
      6656.,   7256.,   6129.,   6615.,   4876.,   5224.,   2849.,   3035.,
      1804.,   2020.,   4544.,   5008.,   8284.,   9028.,   13088.,  14144.,
      15200.,  16256.,  13348.,  14188.,  10240.,  10832.,  5812.,   6124.,
      3964.,   4180.,   9184.,   9648.,   15724.,  16468.,  23648.,  24704.,
      25760.,  26816.,  21748.,  22588.,  16160.,  16752.,  8932.,   9244.,
      5819.,   6029.,   12796.,  13240.,  20979.,  21681.,  30416.,  31400.,
      32384.,  33368.,  26433.,  27207.,  19084.,  19624.,  10289.,  10571.,
      5990.,   6162.,   12896.,  13256.,  20750.,  21314.,  29584.,  30368.,
      31152.,  31936.,  25010.,  25622.,  17792.,  18216.,  9466.,   9686.,
      4157.,   4259.,   8844.,   9056.,   14077.,  14407.,  19872.,  20328.,
      20784.,  21240.,  16519.,  16873.,  11644.,  11888.,  6143.,   6269.,
      101.,    235.,    476.,    752.,    1141.,   1567.,   2112.,   2696.,
      3280.,   3864.,   3007.,   3457.,   2380.,   2688.,   1383.,   1541.,
      1566.,   1866.,   3824.,   4440.,   6806.,   7754.,   10544.,  11840.,
      13136.,  14432.,  11162.,  12158.,  8336.,   9016.,   4626.,   4974.,
      4715.,   5213.,   10684.,  11704.,  17955.,  19521.,  26576.,  28712.,
      30848.,  32984.,  25425.,  27063.,  18508.,  19624.,  10049.,  10619.,
      9868.,   10596.,  21696.,  23184.,  35548.,  37828.,  51488.,  54592.,
      57696.,  60800.,  46756.,  49132.,  33536.,  35152.,  17972.,  18796.,
      17148.,  17876.,  36576.,  38064.,  58348.,  60628.,  82528.,  85632.,
      88736.,  91840.,  70516.,  72892.,  49696.,  51312.,  26212.,  27036.,
      17627.,  18221.,  37180.,  38392.,  58707.,  60561.,  82256.,  84776.,
      87296.,  89816.,  68769.,  70695.,  48076.,  49384.,  25169.,  25835.,
      15142.,  15570.,  31712.,  32584.,  49742.,  51074.,  69264.,  71072.,
      72880.,  74688.,  57074.,  58454.,  39680.,  40616.,  20666.,  21142.,
      9373.,   9603.,   19532.,  20000.,  30493.,  31207.,  42272.,  43240.,
      44208.,  45176.,  34471.,  35209.,  23868.,  24368.,  12383.,  12637.,
      197.,    459.,    924.,    1456.,   2197.,   3007.,   4032.,   5128.,
      6224.,   7320.,   5599.,   6433.,   4364.,   4928.,   2503.,   2789.,
      3038.,   3594.,   7280.,   8408.,   12758.,  14474.,  19504.,  21824.,
      24144.,  26464.,  20186.,  21950.,  14864.,  16056.,  8146.,   8750.,
      8843.,   9725.,   19708.,  21496.,  32643.,  35361.,  47696.,  51368.,
      55040.,  58712.,  44721.,  47511.,  32140.,  34024.,  17249.,  18203.,
      17932.,  19172.,  38848.,  41360.,  62812.,  66628.,  89888.,  95040.,
      100192., 105344., 80164.,  84076.,  56832.,  59472.,  30132.,  31468.,
      30332.,  31572.,  63968.,  66480.,  100972., 104788., 141408., 146560.,
      151712., 156864., 119284., 123196., 83232.,  85872.,  43492.,  44828.,
      29435.,  30413.,  61564.,  63544.,  96435.,  99441.,  134096., 138152.,
      142208., 146264., 111105., 114183., 77068.,  79144.,  40049.,  41099.,
      24294.,  24978.,  50528.,  51912.,  78734.,  80834.,  108944., 111776.,
      114608., 117440., 89138.,  91286.,  61568.,  63016.,  31866.,  32598.,
      14589.,  14947.,  30220.,  30944.,  46909.,  48007.,  64672.,  66152.,
      67632.,  69112.,  52423.,  53545.,  36092.,  36848.,  18623.,  19005.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38550.,   44094.,   63128.,   70904.,   94210.,   104410.,  108250.,
      119410.,  122290.,  134410.,  136330.,  149410.,  126680.,  137528.,
      108606.,  117030.,  106664.,  117128.,  164512.,  178976.,  234360.,
      253080.,  259480.,  279480.,  284600.,  305880.,  309720.,  332280.,
      277920.,  296480.,  231560.,  245864.,  228010.,  244930.,  340200.,
      363400.,  471550.,  501350.,  510950.,  542350.,  550350.,  583350.,
      589750.,  624350.,  517800.,  546120.,  423490.,  445210.,  401770.,
      426370.,  582120.,  615560.,  786750.,  829350.,  826150.,  870350.,
      865550.,  911350.,  904950.,  952350.,  780200.,  818760.,  627970.,
      657370.,  575530.,  607810.,  824040.,  867720.,  1101950., 1157350.,
      1141350., 1198350., 1180750., 1239350., 1220150., 1280350., 1042600.,
      1091400., 832450.,  869530.,  749290.,  789250.,  1065960., 1119880.,
      1417150., 1485350., 1456550., 1526350., 1495950., 1567350., 1535350.,
      1608350., 1305000., 1364040., 1036930., 1081690., 890216.,  925256.,
      1247136., 1294368., 1635000., 1694680., 1672920., 1733880., 1710840.,
      1773080., 1748760., 1812280., 1467040., 1518368., 1151816., 1190696.,
      901110.,  929694.,  1251608., 1290104., 1627810., 1676410., 1661050.,
      1710610., 1694290., 1744810., 1727530., 1779010., 1438040., 1479608.,
      1120926., 1152390., 503958.,  546366.,  732824.,  789752.,  992770.,
      1064410., 1006810., 1079410., 1020850., 1094410., 1034890., 1109410.,
      894680.,  954680.,  721470.,  766758.,  972968.,  1032584., 1385120.,
      1465120., 1842040., 1942680., 1867160., 1969080., 1892280., 1995480.,
      1917400., 2021880., 1629600., 1713696., 1294472., 1357928., 1618090.,
      1696450., 2275560., 2380680., 2993150., 3125350., 3032550., 3166350.,
      3071950., 3207350., 3111350., 3248350., 2617000., 2727240., 2059330.,
      2142490., 1791850., 1877890., 2517480., 2632840., 3308350., 3453350.,
      3347750., 3494350., 3387150., 3535350., 3426550., 3576350., 2879400.,
      2999880., 2263810., 2354650., 1965610., 2059330., 2759400., 2885000.,
      3623550., 3781350., 3662950., 3822350., 3702350., 3863350., 3741750.,
      3904350., 3141800., 3272520., 2468290., 2566810., 2139370., 2240770.,
      3001320., 3137160., 3938750., 4109350., 3978150., 4150350., 4017550.,
      4191350., 4056950., 4232350., 3404200., 3545160., 2672770., 2778970.,
      2248040., 2332232., 3123104., 3235872., 4061880., 4203480., 4099800.,
      4242680., 4137720., 4281880., 4175640., 4321080., 3474080., 3590944.,
      2706248., 2794280., 2103798., 2169246., 2904344., 2991992., 3755170.,
      3865210., 3788410., 3899410., 3821650., 3933610., 3854890., 3967810.,
      3189080., 3279800., 2471070., 2539398., 969366.,  1048638., 1402520.,
      1508600., 1891330., 2024410., 1905370., 2039410., 1919410., 2054410.,
      1933450., 2069410., 1662680., 1771832., 1334334., 1416486., 1839272.,
      1948040., 2605728., 2751264., 3449720., 3632280., 3474840., 3658680.,
      3499960., 3685080., 3525080., 3711480., 2981280., 3130912., 2357384.,
      2469992., 3008170., 3147970., 4210920., 4397960., 5514750., 5749350.,
      5554150., 5790350., 5593550., 5831350., 5632950., 5872350., 4716200.,
      4908360., 3695170., 3839770., 3181930., 3329410., 4452840., 4650120.,
      5829950., 6077350., 5869350., 6118350., 5908750., 6159350., 5948150.,
      6200350., 4978600., 5181000., 3899650., 4051930., 3355690., 3510850.,
      4694760., 4902280., 6145150., 6405350., 6184550., 6446350., 6223950.,
      6487350., 6263350., 6528350., 5241000., 5453640., 4104130., 4264090.,
      3529450., 3692290., 4936680., 5154440., 6460350., 6733350., 6499750.,
      6774350., 6539150., 6815350., 6578550., 6856350., 5503400., 5726280.,
      4308610., 4476250., 3605864., 3739208., 4999072., 5177376., 6488760.,
      6712280., 6526680., 6751480., 6564600., 6790680., 6602520., 6829880.,
      5481120., 5663520., 4260680., 4397864., 3306486., 3408798., 4557080.,
      4693880., 5882530., 6054010., 5915770., 6088210., 5949010., 6122410.,
      5982250., 6156610., 4940120., 5079992., 3821214., 3926406.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,      70.,      180.,     324.,    578.,     890.,     1352.,
      1896.,    2440.,    2984.,    3098.,   3602.,    2996.,    3396.,
      2006.,    2238.,    620.,     956.,    2632.,    3432.,    6292.,
      7684.,    11856.,   13968.,   16080.,  18192.,   16324.,   18100.,
      13896.,   15208.,   8540.,    9260.,   4330.,    5218.,    12476.,
      14444.,   24822.,   28062.,   41752.,  46456.,   51160.,   55864.,
      47358.,   51174.,   37820.,   40556.,  22162.,   23626.,   13720.,
      15416.,   34832.,   38480.,   63848.,  69704.,   101280.,  109600.,
      117920.,  126240.,  103880.,  110504., 79888.,   84560.,   45432.,
      47896.,   30680.,   32376.,   71312.,  74960.,   122408.,  128264.,
      184480.,  192800.,  201120.,  209440., 170120.,  176744.,  126608.,
      131280.,  70072.,   72536.,   45610.,  47266.,   100412.,  103916.,
      164790.,  170334.,  239128.,  246904., 254680.,  262456.,  208062.,
      214182.,  150332.,  154604.,  81106.,  83338.,   47180.,   48540.,
      101640.,  104488.,  163636.,  168100., 233424.,  239632.,  245840.,
      252048.,  197476.,  202324.,  140552., 143912.,  74812.,   76556.,
      32830.,   33638.,   69876.,   71556.,  111266.,  113882.,  157128.,
      160744.,  164360.,  167976.,  130682., 133490.,  92148.,   94084.,
      48630.,   49630.,   670.,     1734.,   3508.,    5700.,    8642.,
      12026.,   16200.,   20840.,   25480.,  30120.,   23450.,   27026.,
      18612.,   21060.,   10838.,   12094.,  12140.,   14524.,   29768.,
      34664.,   53140.,   60676.,   82512.,  92816.,   103120.,  113424.,
      87748.,   95668.,   65608.,   71016.,  36444.,   39212.,   36970.,
      40930.,   83900.,   92012.,   141174., 153630.,  209176.,  226168.,
      243160.,  260152.,  200574.,  213606., 146108.,  154988.,  79378.,
      83914.,   77720.,   83512.,   171024., 182864.,  280424.,  298568.,
      406432.,  431136.,  455840.,  480544., 369608.,  388520.,  265232.,
      278096.,  142200.,  148760.,  135640., 141432.,  289424.,  301264.,
      461864.,  480008.,  653472.,  678176., 702880.,  727584.,  558728.,
      577640.,  393872.,  406736.,  207800., 214360.,  139690.,  144418.,
      294716.,  304364.,  465462.,  480222., 652312.,  672376.,  692440.,
      712504.,  545598.,  560934.,  381500., 391916.,  199762.,  205066.,
      120140.,  123548.,  251656.,  258600., 394804.,  405412.,  549840.,
      564240.,  578640.,  593040.,  453220., 464212.,  315144.,  322600.,
      164156.,  167948.,  74430.,   76262.,  155124.,  158852.,  242210.,
      247898.,  335816.,  343528.,  351240., 358952.,  273914.,  279794.,
      189684.,  193668.,  98422.,   100446., 1310.,    3398.,    6836.,
      11076.,   16706.,   23162.,   31048.,  39784.,   48520.,   57256.,
      43802.,   50450.,   34228.,   38724.,  19670.,   21950.,   23660.,
      28092.,   56904.,   65896.,   99988.,  113668.,  153168.,  171664.,
      190160.,  208656.,  159172.,  173236., 117320.,  126824.,  64348.,
      69164.,   69610.,   76642.,   155324., 169580.,  257526.,  279198.,
      376600.,  405880.,  435160.,  464440., 353790.,  376038.,  254396.,
      269420.,  136594.,  144202.,  141720., 151608.,  307216.,  327248.,
      497000.,  527432.,  711584.,  752672., 793760.,  834848.,  635336.,
      666536.,  450576.,  471632.,  238968., 249624.,  240600.,  250488.,
      507536.,  527568.,  801320.,  831752., 1122464., 1163552., 1204640.,
      1245728., 947336.,  978536.,  661136., 682192.,  345528.,  356184.,
      233770.,  241570.,  489020.,  504812., 766134.,  790110.,  1065496.,
      1097848., 1130200., 1162552., 883134., 907686.,  612668.,  629228.,
      318418.,  326794.,  193100.,  198556., 401672.,  412712.,  625972.,
      642724.,  866256.,  888848.,  911440., 934032.,  708964.,  726100.,
      489736.,  501288.,  253500.,  259340., 116030.,  118886.,  240372.,
      246148.,  373154.,  381914.,  514504., 526312.,  538120.,  549928.,
      417146.,  426098.,  287220.,  293252., 148214.,  151262.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1266.,   1356.,   1446.,   1536.,   2062.,   2188.,   2314.,   2440.,
      3065.,   3230.,   3395.,   3560.,   3500.,   3680.,   3860.,   4040.,
      3935.,   4130.,   4325.,   4520.,   4370.,   4580.,   4790.,   5000.,
      4054.,   4228.,   4402.,   4576.,   3471.,   3606.,   3741.,   3876.,
      3448.,   3616.,   3784.,   3952.,   5304.,   5536.,   5768.,   6000.,
      7540.,   7840.,   8140.,   8440.,   8320.,   8640.,   8960.,   9280.,
      9100.,   9440.,   9780.,   10120.,  9880.,   10240.,  10600.,  10960.,
      8856.,   9152.,   9448.,   9744.,   7372.,   7600.,   7828.,   8056.,
      7310.,   7580.,   7850.,   8120.,   10890.,  11260.,  11630.,  12000.,
      15075.,  15550.,  16025.,  16500.,  16300.,  16800.,  17300.,  17800.,
      17525.,  18050.,  18575.,  19100.,  18750.,  19300.,  19850.,  20400.,
      16450.,  16900.,  17350.,  17800.,  13445.,  13790.,  14135.,  14480.,
      12710.,  13100.,  13490.,  13880.,  18410.,  18940.,  19470.,  20000.,
      24875.,  25550.,  26225.,  26900.,  26100.,  26800.,  27500.,  28200.,
      27325.,  28050.,  28775.,  29500.,  28550.,  29300.,  30050.,  30800.,
      24610.,  25220.,  25830.,  26440.,  19805.,  20270.,  20735.,  21200.,
      18110.,  18620.,  19130.,  19640.,  25930.,  26620.,  27310.,  28000.,
      34675.,  35550.,  36425.,  37300.,  35900.,  36800.,  37700.,  38600.,
      37125.,  38050.,  38975.,  39900.,  38350.,  39300.,  40250.,  41200.,
      32770.,  33540.,  34310.,  35080.,  26165.,  26750.,  27335.,  27920.,
      23510.,  24140.,  24770.,  25400.,  33450.,  34300.,  35150.,  36000.,
      44475.,  45550.,  46625.,  47700.,  45700.,  46800.,  47900.,  49000.,
      46925.,  48050.,  49175.,  50300.,  48150.,  49300.,  50450.,  51600.,
      40930.,  41860.,  42790.,  43720.,  32525.,  33230.,  33935.,  34640.,
      27928.,  28480.,  29032.,  29584.,  39128.,  39872.,  40616.,  41360.,
      51300.,  52240.,  53180.,  54120.,  52480.,  53440.,  54400.,  55360.,
      53660.,  54640.,  55620.,  56600.,  54840.,  55840.,  56840.,  57840.,
      46008.,  46816.,  47624.,  48432.,  36124.,  36736.,  37348.,  37960.,
      28266.,  28716.,  29166.,  29616.,  39262.,  39868.,  40474.,  41080.,
      51065.,  51830.,  52595.,  53360.,  52100.,  52880.,  53660.,  54440.,
      53135.,  53930.,  54725.,  55520.,  54170.,  54980.,  55790.,  56600.,
      45094.,  45748.,  46402.,  47056.,  35151.,  35646.,  36141.,  36636.,
      15666.,  16332.,  16998.,  17664.,  22798.,  23692.,  24586.,  25480.,
      30905.,  32030.,  33155.,  34280.,  31340.,  32480.,  33620.,  34760.,
      31775.,  32930.,  34085.,  35240.,  32210.,  33380.,  34550.,  35720.,
      27862.,  28804.,  29746.,  30688.,  22479.,  23190.,  23901.,  24612.,
      30328.,  31264.,  32200.,  33136.,  43192.,  44448.,  45704.,  46960.,
      57460.,  59040.,  60620.,  62200.,  58240.,  59840.,  61440.,  63040.,
      59020.,  60640.,  62260.,  63880.,  59800.,  61440.,  63080.,  64720.,
      50840.,  52160.,  53480.,  54800.,  40396.,  41392.,  42388.,  43384.,
      50510.,  51740.,  52970.,  54200.,  71050.,  72700.,  74350.,  76000.,
      93475.,  95550.,  97625.,  99700.,  94700.,  96800.,  98900.,  101000.,
      95925.,  98050.,  100175., 102300., 97150.,  99300.,  101450., 103600.,
      81730.,  83460.,  85190.,  86920.,  64325.,  65630.,  66935.,  68240.,
      55910.,  57260.,  58610.,  59960.,  78570.,  80380.,  82190.,  84000.,
      103275., 105550., 107825., 110100., 104500., 106800., 109100., 111400.,
      105725., 108050., 110375., 112700., 106950., 109300., 111650., 114000.,
      89890.,  91780.,  93670.,  95560.,  70685.,  72110.,  73535.,  74960.,
      61310.,  62780.,  64250.,  65720.,  86090.,  88060.,  90030.,  92000.,
      113075., 115550., 118025., 120500., 114300., 116800., 119300., 121800.,
      115525., 118050., 120575., 123100., 116750., 119300., 121850., 124400.,
      98050.,  100100., 102150., 104200., 77045.,  78590.,  80135.,  81680.,
      66710.,  68300.,  69890.,  71480.,  93610.,  95740.,  97870.,  100000.,
      122875., 125550., 128225., 130900., 124100., 126800., 129500., 132200.,
      125325., 128050., 130775., 133500., 126550., 129300., 132050., 134800.,
      106210., 108420., 110630., 112840., 83405.,  85070.,  86735.,  88400.,
      70168.,  71488.,  72808.,  74128.,  97496.,  99264.,  101032., 102800.,
      126820., 129040., 131260., 133480., 128000., 130240., 132480., 134720.,
      129180., 131440., 133700., 135960., 130360., 132640., 134920., 137200.,
      108472., 110304., 112136., 113968., 84508.,  85888.,  87268.,  88648.,
      65706.,  66732.,  67758.,  68784.,  90718.,  92092.,  93466.,  94840.,
      117305., 119030., 120755., 122480., 118340., 120080., 121820., 123560.,
      119375., 121130., 122885., 124640., 120410., 122180., 123950., 125720.,
      99622.,  101044., 102466., 103888., 77199.,  78270.,  79341.,  80412.,
      30066.,  31308.,  32550.,  33792.,  43534.,  45196.,  46858.,  48520.,
      58745.,  60830.,  62915.,  65000.,  59180.,  61280.,  63380.,  65480.,
      59615.,  61730.,  63845.,  65960.,  60050.,  62180.,  64310.,  66440.,
      51670.,  53380.,  55090.,  56800.,  41487.,  42774.,  44061.,  45348.,
      57208.,  58912.,  60616.,  62320.,  81080.,  83360.,  85640.,  87920.,
      107380., 110240., 113100., 115960., 108160., 111040., 113920., 116800.,
      108940., 111840., 114740., 117640., 109720., 112640., 115560., 118480.,
      92824.,  95168.,  97512.,  99856.,  73420.,  75184.,  76948.,  78712.,
      93710.,  95900.,  98090.,  100280., 131210., 134140., 137070., 140000.,
      171875., 175550., 179225., 182900., 173100., 176800., 180500., 184200.,
      174325., 178050., 181775., 185500., 175550., 179300., 183050., 186800.,
      147010., 150020., 153030., 156040., 115205., 117470., 119735., 122000.,
      99110.,  101420., 103730., 106040., 138730., 141820., 144910., 148000.,
      181675., 185550., 189425., 193300., 182900., 186800., 190700., 194600.,
      184125., 188050., 191975., 195900., 185350., 189300., 193250., 197200.,
      155170., 158340., 161510., 164680., 121565., 123950., 126335., 128720.,
      104510., 106940., 109370., 111800., 146250., 149500., 152750., 156000.,
      191475., 195550., 199625., 203700., 192700., 196800., 200900., 205000.,
      193925., 198050., 202175., 206300., 195150., 199300., 203450., 207600.,
      163330., 166660., 169990., 173320., 127925., 130430., 132935., 135440.,
      109910., 112460., 115010., 117560., 153770., 157180., 160590., 164000.,
      201275., 205550., 209825., 214100., 202500., 206800., 211100., 215400.,
      203725., 208050., 212375., 216700., 204950., 209300., 213650., 218000.,
      171490., 174980., 178470., 181960., 134285., 136910., 139535., 142160.,
      112408., 114496., 116584., 118672., 155864., 158656., 161448., 164240.,
      202340., 205840., 209340., 212840., 203520., 207040., 210560., 214080.,
      204700., 208240., 211780., 215320., 205880., 209440., 213000., 216560.,
      170936., 173792., 176648., 179504., 132892., 135040., 137188., 139336.,
      103146., 104748., 106350., 107952., 142174., 144316., 146458., 148600.,
      183545., 186230., 188915., 191600., 184580., 187280., 189980., 192680.,
      185615., 188330., 191045., 193760., 186650., 189380., 192110., 194840.,
      154150., 156340., 158530., 160720., 119247., 120894., 122541., 124188.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,     2.,     3.,     4.,     7.,     10.,    13.,    16.,    22.,
      28.,    34.,    40.,    50.,    60.,    70.,    80.,    90.,    100.,
      110.,   120.,   109.,   118.,   127.,   136.,   103.,   110.,   117.,
      124.,   68.,    72.,    76.,    80.,    26.,    32.,    38.,    44.,
      98.,    112.,   126.,   140.,   224.,   248.,   272.,   296.,   412.,
      448.,   484.,   520.,   556.,   592.,   628.,   664.,   554.,   584.,
      614.,   644.,   466.,   488.,   510.,   532.,   284.,   296.,   308.,
      320.,   155.,   170.,   185.,   200.,   433.,   466.,   499.,   532.,
      846.,   900.,   954.,   1008.,  1406.,  1484.,  1562.,  1640.,  1718.,
      1796.,  1874.,  1952.,  1575.,  1638.,  1701.,  1764.,  1249.,  1294.,
      1339.,  1384.,  728.,   752.,   776.,   800.,   468.,   496.,   524.,
      552.,   1172.,  1232.,  1292.,  1352.,  2128.,  2224.,  2320.,  2416.,
      3352.,  3488.,  3624.,  3760.,  3896.,  4032.,  4168.,  4304.,  3412.,
      3520.,  3628.,  3736.,  2612.,  2688.,  2764.,  2840.,  1480.,  1520.,
      1560.,  1600.,  1028.,  1056.,  1084.,  1112.,  2372.,  2432.,  2492.,
      2552.,  4048.,  4144.,  4240.,  4336.,  6072.,  6208.,  6344.,  6480.,
      6616.,  6752.,  6888.,  7024.,  5572.,  5680.,  5788.,  5896.,  4132.,
      4208.,  4284.,  4360.,  2280.,  2320.,  2360.,  2400.,  1487.,  1514.,
      1541.,  1568.,  3265.,  3322.,  3379.,  3436.,  5346.,  5436.,  5526.,
      5616.,  7742.,  7868.,  7994.,  8120.,  8246.,  8372.,  8498.,  8624.,
      6723.,  6822.,  6921.,  7020.,  4849.,  4918.,  4987.,  5056.,  2612.,
      2648.,  2684.,  2720.,  1522.,  1544.,  1566.,  1588.,  3274.,  3320.,
      3366.,  3412.,  5264.,  5336.,  5408.,  5480.,  7500.,  7600.,  7700.,
      7800.,  7900.,  8000.,  8100.,  8200.,  6338.,  6416.,  6494.,  6572.,
      4506.,  4560.,  4614.,  4668.,  2396.,  2424.,  2452.,  2480.,  1053.,
      1066.,  1079.,  1092.,  2239.,  2266.,  2293.,  2320.,  3562.,  3604.,
      3646.,  3688.,  5026.,  5084.,  5142.,  5200.,  5258.,  5316.,  5374.,
      5432.,  4177.,  4222.,  4267.,  4312.,  2943.,  2974.,  3005.,  3036.,
      1552.,  1568.,  1584.,  1600.,  17.,    34.,    51.,    68.,    103.,
      138.,   173.,   208.,   262.,   316.,   370.,   424.,   498.,   572.,
      646.,   720.,   794.,   868.,   942.,   1016.,  733.,   790.,   847.,
      904.,   583.,   622.,   661.,   700.,   340.,   360.,   380.,   400.,
      378.,   416.,   454.,   492.,   930.,   1008.,  1086.,  1164.,  1664.,
      1784.,  1904.,  2024.,  2588.,  2752.,  2916.,  3080.,  3244.,  3408.,
      3572.,  3736.,  2762.,  2888.,  3014.,  3140.,  2066.,  2152.,  2238.,
      2324.,  1148.,  1192.,  1236.,  1280.,  1163.,  1226.,  1289.,  1352.,
      2641.,  2770.,  2899.,  3028.,  4446.,  4644.,  4842.,  5040.,  6590.,
      6860.,  7130.,  7400.,  7670.,  7940.,  8210.,  8480.,  6327.,  6534.,
      6741.,  6948.,  4609.,  4750.,  4891.,  5032.,  2504.,  2576.,  2648.,
      2720.,  2452.,  2544.,  2636.,  2728.,  5396.,  5584.,  5772.,  5960.,
      8848.,  9136.,  9424.,  9712.,  12824., 13216., 13608., 14000., 14392.,
      14784., 15176., 15568., 11668., 11968., 12268., 12568., 8372.,  8576.,
      8780.,  8984.,  4488.,  4592.,  4696.,  4800.,  4292.,  4384.,  4476.,
      4568.,  9156.,  9344.,  9532.,  9720.,  14608., 14896., 15184., 15472.,
      20664., 21056., 21448., 21840., 22232., 22624., 23016., 23408., 17668.,
      17968., 18268., 18568., 12452., 12656., 12860., 13064., 6568.,  6672.,
      6776.,  6880.,  4415.,  4490.,  4565.,  4640.,  9313.,  9466.,  9619.,
      9772.,  14706., 14940., 15174., 15408., 20606., 20924., 21242., 21560.,
      21878., 22196., 22514., 22832., 17235., 17478., 17721., 17964., 12049.,
      12214., 12379., 12544., 6308.,  6392.,  6476.,  6560.,  3794.,  3848.,
      3902.,  3956.,  7946.,  8056.,  8166.,  8276.,  12464., 12632., 12800.,
      12968., 17356., 17584., 17812., 18040., 18268., 18496., 18724., 18952.,
      14306., 14480., 14654., 14828., 9946.,  10064., 10182., 10300., 5180.,
      5240.,  5300.,  5360.,  2349.,  2378.,  2407.,  2436.,  4895.,  4954.,
      5013.,  5072.,  7642.,  7732.,  7822.,  7912.,  10594., 10716., 10838.,
      10960., 11082., 11204., 11326., 11448., 8641.,  8734.,  8827.,  8920.,
      5983.,  6046.,  6109.,  6172.,  3104.,  3136.,  3168.,  3200.,  33.,
      66.,    99.,    132.,   199.,   266.,   333.,   400.,   502.,   604.,
      706.,   808.,   946.,   1084.,  1222.,  1360.,  1498.,  1636.,  1774.,
      1912.,  1357.,  1462.,  1567.,  1672.,  1063.,  1134.,  1205.,  1276.,
      612.,   648.,   684.,   720.,   730.,   800.,   870.,   940.,   1762.,
      1904.,  2046.,  2188.,  3104.,  3320.,  3536.,  3752.,  4764.,  5056.,
      5348.,  5640.,  5932.,  6224.,  6516.,  6808.,  4970.,  5192.,  5414.,
      5636.,  3666.,  3816.,  3966.,  4116.,  2012.,  2088.,  2164.,  2240.,
      2171.,  2282.,  2393.,  2504.,  4849.,  5074.,  5299.,  5524.,  8046.,
      8388.,  8730.,  9072.,  11774., 12236., 12698., 13160., 13622., 14084.,
      14546., 15008., 11079., 11430., 11781., 12132., 7969.,  8206.,  8443.,
      8680.,  4280.,  4400.,  4520.,  4640.,  4436.,  4592.,  4748.,  4904.,
      9620.,  9936.,  10252., 10568., 15568., 16048., 16528., 17008., 22296.,
      22944., 23592., 24240., 24888., 25536., 26184., 26832., 19924., 20416.,
      20908., 21400., 14132., 14464., 14796., 15128., 7496.,  7664.,  7832.,
      8000.,  7556.,  7712.,  7868.,  8024.,  15940., 16256., 16572., 16888.,
      25168., 25648., 26128., 26608., 35256., 35904., 36552., 37200., 37848.,
      38496., 39144., 39792., 29764., 30256., 30748., 31240., 20772., 21104.,
      21436., 21768., 10856., 11024., 11192., 11360., 7343.,  7466.,  7589.,
      7712.,  15361., 15610., 15859., 16108., 24066., 24444., 24822., 25200.,
      33470., 33980., 34490., 35000., 35510., 36020., 36530., 37040., 27747.,
      28134., 28521., 28908., 19249., 19510., 19771., 20032., 10004., 10136.,
      10268., 10400., 6066.,  6152.,  6238.,  6324.,  12618., 12792., 12966.,
      13140., 19664., 19928., 20192., 20456., 27212., 27568., 27924., 28280.,
      28636., 28992., 29348., 29704., 22274., 22544., 22814., 23084., 15386.,
      15568., 15750., 15932., 7964.,  8056.,  8148.,  8240.,  3645.,  3690.,
      3735.,  3780.,  7551.,  7642.,  7733.,  7824.,  11722., 11860., 11998.,
      12136., 16162., 16348., 16534., 16720., 16906., 17092., 17278., 17464.,
      13105., 13246., 13387., 13528., 9023.,  9118.,  9213.,  9308.,  4656.,
      4704.,  4752.,  4800.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9507.,    10209.,   10911.,   11613.,   15608.,   16592.,   17576.,
      18560.,   23335.,   24625.,   25915.,   27205.,   26785.,   28195.,
      29605.,   31015.,   30235.,   31765.,   33295.,   34825.,   33685.,
      35335.,   36985.,   38635.,   31352.,   32720.,   34088.,   35456.,
      26913.,   27975.,   29037.,   30099.,   26420.,   27740.,   29060.,
      30380.,   40800.,   42624.,   44448.,   46272.,   58180.,   60540.,
      62900.,   65260.,   64380.,   66900.,   69420.,   71940.,   70580.,
      73260.,   75940.,   78620.,   76780.,   79620.,   82460.,   85300.,
      68960.,   71296.,   73632.,   75968.,   57500.,   59300.,   61100.,
      62900.,   56605.,   58735.,   60865.,   62995.,   84520.,   87440.,
      90360.,   93280.,   117225.,  120975.,  124725.,  128475.,  126975.,
      130925.,  134875.,  138825.,  136725.,  140875.,  145025.,  149175.,
      146475.,  150825.,  155175.,  159525.,  128680.,  132240.,  135800.,
      139360.,  105295.,  108025.,  110755.,  113485.,  99565.,   102655.,
      105745.,  108835.,  144360.,  148560.,  152760.,  156960.,  195225.,
      200575.,  205925.,  211275.,  204975.,  210525.,  216075.,  221625.,
      214725.,  220475.,  226225.,  231975.,  224475.,  230425.,  236375.,
      242325.,  193640.,  198480.,  203320.,  208160.,  155935.,  159625.,
      163315.,  167005.,  142525.,  146575.,  150625.,  154675.,  204200.,
      209680.,  215160.,  220640.,  273225.,  280175.,  287125.,  294075.,
      282975.,  290125.,  297275.,  304425.,  292725.,  300075.,  307425.,
      314775.,  302475.,  310025.,  317575.,  325125.,  258600.,  264720.,
      270840.,  276960.,  206575.,  211225.,  215875.,  220525.,  185485.,
      190495.,  195505.,  200515.,  264040.,  270800.,  277560.,  284320.,
      351225.,  359775.,  368325.,  376875.,  360975.,  369725.,  378475.,
      387225.,  370725.,  379675.,  388625.,  397575.,  380475.,  389625.,
      398775.,  407925.,  323560.,  330960.,  338360.,  345760.,  257215.,
      262825.,  268435.,  274045.,  221012.,  225404.,  229796.,  234188.,
      309728.,  315648.,  321568.,  327488.,  406180.,  413660.,  421140.,
      428620.,  415580.,  423220.,  430860.,  438500.,  424980.,  432780.,
      440580.,  448380.,  434380.,  442340.,  450300.,  458260.,  364512.,
      370944.,  377376.,  383808.,  286268.,  291140.,  296012.,  300884.,
      224067.,  227649.,  231231.,  234813.,  311288.,  316112.,  320936.,
      325760.,  404935.,  411025.,  417115.,  423205.,  413185.,  419395.,
      425605.,  431815.,  421435.,  427765.,  434095.,  440425.,  429685.,
      436135.,  442585.,  449035.,  357752.,  362960.,  368168.,  373376.,
      278913.,  282855.,  286797.,  290739.,  123555.,  128865.,  134175.,
      139485.,  179960.,  187088.,  194216.,  201344.,  244135.,  253105.,
      262075.,  271045.,  247585.,  256675.,  265765.,  274855.,  251035.,
      260245.,  269455.,  278665.,  254485.,  263815.,  273145.,  282475.,
      220280.,  227792.,  235304.,  242816.,  177825.,  183495.,  189165.,
      194835.,  239924.,  247388.,  254852.,  262316.,  341856.,  351872.,
      361888.,  371904.,  454980.,  467580.,  480180.,  492780.,  461180.,
      473940.,  486700.,  499460.,  467380.,  480300.,  493220.,  506140.,
      473580.,  486660.,  499740.,  512820.,  402784.,  413312.,  423840.,
      434368.,  320156.,  328100.,  336044.,  343988.,  400285.,  410095.,
      419905.,  429715.,  563240.,  576400.,  589560.,  602720.,  741225.,
      757775.,  774325.,  790875.,  750975.,  767725.,  784475.,  801225.,
      760725.,  777675.,  794625.,  811575.,  770475.,  787625.,  804775.,
      821925.,  648360.,  662160.,  675960.,  689760.,  510415.,  520825.,
      531235.,  541645.,  443245.,  454015.,  464785.,  475555.,  623080.,
      637520.,  651960.,  666400.,  819225.,  837375.,  855525.,  873675.,
      828975.,  847325.,  865675.,  884025.,  838725.,  857275.,  875825.,
      894375.,  848475.,  867225.,  885975.,  904725.,  713320.,  728400.,
      743480.,  758560.,  561055.,  572425.,  583795.,  595165.,  486205.,
      497935.,  509665.,  521395.,  682920.,  698640.,  714360.,  730080.,
      897225.,  916975.,  936725.,  956475.,  906975.,  926925.,  946875.,
      966825.,  916725.,  936875.,  957025.,  977175.,  926475.,  946825.,
      967175.,  987525.,  778280.,  794640.,  811000.,  827360.,  611695.,
      624025.,  636355.,  648685.,  529165.,  541855.,  554545.,  567235.,
      742760.,  759760.,  776760.,  793760.,  975225.,  996575.,  1017925.,
      1039275., 984975.,  1006525., 1028075., 1049625., 994725.,  1016475.,
      1038225., 1059975., 1004475., 1026425., 1048375., 1070325., 843240.,
      860880.,  878520.,  896160.,  662335.,  675625.,  688915.,  702205.,
      557396.,  567932.,  578468.,  589004.,  774624.,  788736.,  802848.,
      816960.,  1007780., 1025500., 1043220., 1060940., 1017180., 1035060.,
      1052940., 1070820., 1026580., 1044620., 1062660., 1080700., 1035980.,
      1054180., 1072380., 1090580., 862176.,  876800.,  891424.,  906048.,
      671804.,  682820.,  693836.,  704852.,  522435.,  530625.,  538815.,
      547005.,  721400.,  732368.,  743336.,  754304.,  932935.,  946705.,
      960475.,  974245.,  941185.,  955075.,  968965.,  982855.,  949435.,
      963445.,  977455.,  991465.,  957685.,  971815.,  985945.,  1000075.,
      792440.,  803792.,  815144.,  826496.,  614145.,  622695.,  631245.,
      639795.,  237603.,  247521.,  257439.,  267357.,  344312.,  357584.,
      370856.,  384128.,  464935.,  481585.,  498235.,  514885.,  468385.,
      485155.,  501925.,  518695.,  471835.,  488725.,  505615.,  522505.,
      475285.,  492295.,  509305.,  526315.,  409208.,  422864.,  436520.,
      450176.,  328737.,  339015.,  349293.,  359571.,  453428.,  467036.,
      480644.,  494252.,  642912.,  661120.,  679328.,  697536.,  851780.,
      874620.,  897460.,  920300.,  857980.,  880980.,  903980.,  926980.,
      864180.,  887340.,  910500.,  933660.,  870380.,  893700.,  917020.,
      940340.,  736608.,  755328.,  774048.,  792768.,  582812.,  596900.,
      610988.,  625076.,  743965.,  761455.,  778945.,  796435.,  1041960.,
      1065360., 1088760., 1112160., 1365225., 1394575., 1423925., 1453275.,
      1374975., 1404525., 1434075., 1463625., 1384725., 1414475., 1444225.,
      1473975., 1394475., 1424425., 1454375., 1484325., 1168040., 1192080.,
      1216120., 1240160., 915535.,  933625.,  951715.,  969805.,  786925.,
      805375.,  823825.,  842275.,  1101800., 1126480., 1151160., 1175840.,
      1443225., 1474175., 1505125., 1536075., 1452975., 1484125., 1515275.,
      1546425., 1462725., 1494075., 1525425., 1556775., 1472475., 1504025.,
      1535575., 1567125., 1233000., 1258320., 1283640., 1308960., 966175.,
      985225.,  1004275., 1023325., 829885.,  849295.,  868705.,  888115.,
      1161640., 1187600., 1213560., 1239520., 1521225., 1553775., 1586325.,
      1618875., 1530975., 1563725., 1596475., 1629225., 1540725., 1573675.,
      1606625., 1639575., 1550475., 1583625., 1616775., 1649925., 1297960.,
      1324560., 1351160., 1377760., 1016815., 1036825., 1056835., 1076845.,
      872845.,  893215.,  913585.,  933955.,  1221480., 1248720., 1275960.,
      1303200., 1599225., 1633375., 1667525., 1701675., 1608975., 1643325.,
      1677675., 1712025., 1618725., 1653275., 1687825., 1722375., 1628475.,
      1663225., 1697975., 1732725., 1362920., 1390800., 1418680., 1446560.,
      1067455., 1088425., 1109395., 1130365., 893780.,  910460.,  927140.,
      943820.,  1239520., 1261824., 1284128., 1306432., 1609380., 1637340.,
      1665300., 1693260., 1618780., 1646900., 1675020., 1703140., 1628180.,
      1656460., 1684740., 1713020., 1637580., 1666020., 1694460., 1722900.,
      1359840., 1382656., 1405472., 1428288., 1057340., 1074500., 1091660.,
      1108820., 820803.,  833601.,  846399.,  859197.,  1131512., 1148624.,
      1165736., 1182848., 1460935., 1482385., 1503835., 1525285., 1469185.,
      1490755., 1512325., 1533895., 1477435., 1499125., 1520815., 1542505.,
      1485685., 1507495., 1529305., 1551115., 1227128., 1244624., 1262120.,
      1279616., 949377.,  962535.,  975693.,  988851.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,      11.,     17.,     23.,     40.,     60.,     80.,     100.,
      137.,    179.,    221.,    263.,    328.,    400.,    472.,    544.,
      616.,    688.,    760.,    832.,    779.,    845.,    911.,    977.,
      752.,    804.,    856.,    908.,    503.,    533.,    563.,    593.,
      154.,    198.,    242.,    286.,    656.,    760.,    864.,    968.,
      1570.,   1750.,   1930.,   2110.,   2960.,   3232.,   3504.,   3776.,
      4048.,   4320.,   4592.,   4864.,   4102.,   4330.,   4558.,   4786.,
      3488.,   3656.,   3824.,   3992.,   2142.,   2234.,   2326.,   2418.,
      1087.,   1201.,   1315.,   1429.,   3128.,   3380.,   3632.,   3884.,
      6219.,   6633.,   7047.,   7461.,   10456.,  11056.,  11656.,  12256.,
      12856.,  13456.,  14056.,  14656.,  11889.,  12375.,  12861.,  13347.,
      9488.,   9836.,   10184.,  10532.,  5557.,   5743.,   5929.,   6115.,
      3444.,   3660.,   3876.,   4092.,   8736.,   9200.,   9664.,   10128.,
      16004.,  16748.,  17492.,  18236.,  25376.,  26432.,  27488.,  28544.,
      29600.,  30656.,  31712.,  32768.,  26060.,  26900.,  27740.,  28580.,
      20032.,  20624.,  21216.,  21808.,  11388.,  11700.,  12012.,  12324.,
      7764.,   7980.,   8196.,   8412.,   18016.,  18480.,  18944.,  19408.,
      30884.,  31628.,  32372.,  33116.,  46496.,  47552.,  48608.,  49664.,
      50720.,  51776.,  52832.,  53888.,  42860.,  43700.,  44540.,  45380.,
      31872.,  32464.,  33056.,  33648.,  17628.,  17940.,  18252.,  18564.,
      11479.,  11689.,  11899.,  12109.,  25256.,  25700.,  26144.,  26588.,
      41427.,  42129.,  42831.,  43533.,  60088.,  61072.,  62056.,  63040.,
      64024.,  65008.,  65992.,  66976.,  52281.,  53055.,  53829.,  54603.,
      37760.,  38300.,  38840.,  39380.,  20365.,  20647.,  20929.,  21211.,
      11850.,  12022.,  12194.,  12366.,  25520.,  25880.,  26240.,  26600.,
      41074.,  41638.,  42202.,  42766.,  58576.,  59360.,  60144.,  60928.,
      61712.,  62496.,  63280.,  64064.,  49558.,  50170.,  50782.,  51394.,
      35264.,  35688.,  36112.,  36536.,  18766.,  18986.,  19206.,  19426.,
      8237.,   8339.,   8441.,   8543.,   17528.,  17740.,  17952.,  18164.,
      27905.,  28235.,  28565.,  28895.,  39400.,  39856.,  40312.,  40768.,
      41224.,  41680.,  42136.,  42592.,  32771.,  33125.,  33479.,  33833.,
      23104.,  23348.,  23592.,  23836.,  12191.,  12317.,  12443.,  12569.,
      101.,    235.,    369.,    503.,    744.,    1020.,   1296.,   1572.,
      1961.,   2387.,   2813.,   3239.,   3784.,   4368.,   4952.,   5536.,
      6120.,   6704.,   7288.,   7872.,   5675.,   6125.,   6575.,   7025.,
      4528.,   4836.,   5144.,   5452.,   2647.,   2805.,   2963.,   3121.,
      2906.,   3206.,   3506.,   3806.,   7184.,   7800.,   8416.,   9032.,
      12898.,  13846.,  14794.,  15742.,  20112.,  21408.,  22704.,  24000.,
      25296.,  26592.,  27888.,  29184.,  21574.,  22570.,  23566.,  24562.,
      16160.,  16840.,  17520.,  18200.,  8990.,   9338.,   9686.,   10034.,
      9055.,   9553.,   10051.,  10549.,  20600.,  21620.,  22640.,  23660.,
      34731.,  36297.,  37863.,  39429.,  51544.,  53680.,  55816.,  57952.,
      60088.,  62224.,  64360.,  66496.,  49617.,  51255.,  52893.,  54531.,
      36176.,  37292.,  38408.,  39524.,  19669.,  20239.,  20809.,  21379.,
      19188.,  19916.,  20644.,  21372.,  42272.,  43760.,  45248.,  46736.,
      69380.,  71660.,  73940.,  76220.,  100640., 103744., 106848., 109952.,
      113056., 116160., 119264., 122368., 91724.,  94100.,  96476.,  98852.,
      65856.,  67472.,  69088.,  70704.,  35324.,  36148.,  36972.,  37796.,
      33748.,  34476.,  35204.,  35932.,  72032.,  73520.,  75008.,  76496.,
      114980., 117260., 119540., 121820., 162720., 165824., 168928., 172032.,
      175136., 178240., 181344., 184448., 139244., 141620., 143996., 146372.,
      98176.,  99792.,  101408., 103024., 51804.,  52628.,  53452.,  54276.,
      34807.,  35401.,  35995.,  36589.,  73448.,  74660.,  75872.,  77084.,
      116019., 117873., 119727., 121581., 162616., 165136., 167656., 170176.,
      172696., 175216., 177736., 180256., 136089., 138015., 139941., 141867.,
      95168.,  96476.,  97784.,  99092.,  49837.,  50503.,  51169.,  51835.,
      29962.,  30390.,  30818.,  31246.,  62768.,  63640.,  64512.,  65384.,
      98482.,  99814.,  101146., 102478., 137168., 138976., 140784., 142592.,
      144400., 146208., 148016., 149824., 113110., 114490., 115870., 117250.,
      78656.,  79592.,  80528.,  81464.,  40974.,  41450.,  41926.,  42402.,
      18573.,  18803.,  19033.,  19263.,  38712.,  39180.,  39648.,  40116.,
      60449.,  61163.,  61877.,  62591.,  83816.,  84784.,  85752.,  86720.,
      87688.,  88656.,  89624.,  90592.,  68387.,  69125.,  69863.,  70601.,
      47360.,  47860.,  48360.,  48860.,  24575.,  24829.,  25083.,  25337.,
      197.,    459.,    721.,    983.,    1448.,   1980.,   2512.,   3044.,
      3785.,   4595.,   5405.,   6215.,   7240.,   8336.,   9432.,   10528.,
      11624.,  12720.,  13816.,  14912.,  10571.,  11405.,  12239.,  13073.,
      8304.,   8868.,   9432.,   9996.,   4791.,   5077.,   5363.,   5649.,
      5658.,   6214.,   6770.,   7326.,   13712.,  14840.,  15968.,  17096.,
      24226.,  25942.,  27658.,  29374.,  37264.,  39584.,  41904.,  44224.,
      46544.,  48864.,  51184.,  53504.,  39046.,  40810.,  42574.,  44338.,
      28832.,  30024.,  31216.,  32408.,  15838.,  16442.,  17046.,  17650.,
      17023.,  17905.,  18787.,  19669.,  38072.,  39860.,  41648.,  43436.,
      63243.,  65961.,  68679.,  71397.,  92632.,  96304.,  99976.,  103648.,
      107320., 110992., 114664., 118336., 87345.,  90135.,  92925.,  95715.,
      62864.,  64748.,  66632.,  68516.,  33781.,  34735.,  35689.,  36643.,
      34932.,  36172.,  37412.,  38652.,  75808.,  78320.,  80832.,  83344.,
      122756., 126572., 130388., 134204., 175904., 181056., 186208., 191360.,
      196512., 201664., 206816., 211968., 157388., 161300., 165212., 169124.,
      111680., 114320., 116960., 119600., 59260.,  60596.,  61932.,  63268.,
      59732.,  60972.,  62212.,  63452.,  126048., 128560., 131072., 133584.,
      199076., 202892., 206708., 210524., 278944., 284096., 289248., 294400.,
      299552., 304704., 309856., 315008., 235628., 239540., 243452., 247364.,
      164480., 167120., 169760., 172400., 85980.,  87316.,  88652.,  89988.,
      58135.,  59113.,  60091.,  61069.,  121640., 123620., 125600., 127580.,
      190611., 193617., 196623., 199629., 265144., 269200., 273256., 277312.,
      281368., 285424., 289480., 293536., 219897., 222975., 226053., 229131.,
      152576., 154652., 156728., 158804., 79309.,  80359.,  81409.,  82459.,
      48074.,  48758.,  49442.,  50126.,  100016., 101400., 102784., 104168.,
      155890., 157990., 160090., 162190., 215760., 218592., 221424., 224256.,
      227088., 229920., 232752., 235584., 176662., 178810., 180958., 183106.,
      122048., 123496., 124944., 126392., 63182.,  63914.,  64646.,  65378.,
      28909.,  29267.,  29625.,  29983.,  59896.,  60620.,  61344.,  62068.,
      92993.,  94091.,  95189.,  96287.,  128232., 129712., 131192., 132672.,
      134152., 135632., 137112., 138592., 104003., 105125., 106247., 107369.,
      71616.,  72372.,  73128.,  73884.,  36959.,  37341.,  37723.,  38105.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, SAME3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      73590.,    79134.,    84678.,    90222.,    121336.,   129112.,
      136888.,   144664.,   181970.,   192170.,   202370.,   212570.,
      209450.,   220610.,   231770.,   242930.,   236930.,   249050.,
      261170.,   273290.,   264410.,   277490.,   290570.,   303650.,
      246520.,   257368.,   268216.,   279064.,   211902.,   220326.,
      228750.,   237174.,   206728.,   217192.,   227656.,   238120.,
      319904.,   334368.,   348832.,   363296.,   456920.,   475640.,
      494360.,   513080.,   506360.,   526360.,   546360.,   566360.,
      555800.,   577080.,   598360.,   619640.,   605240.,   627800.,
      650360.,   672920.,   544160.,   562720.,   581280.,   599840.,
      454120.,   468424.,   482728.,   497032.,   445370.,   462290.,
      479210.,   496130.,   665800.,   689000.,   712200.,   735400.,
      924350.,   954150.,   983950.,   1013750.,  1002150.,  1033550.,
      1064950.,  1096350.,  1079950.,  1112950.,  1145950.,  1178950.,
      1157750.,  1192350.,  1226950.,  1261550.,  1017800.,  1046120.,
      1074440.,  1102760.,  833330.,   855050.,   876770.,   898490.,
      788090.,   812690.,   837290.,   861890.,   1143240.,  1176680.,
      1210120.,  1243560.,  1546750.,  1589350.,  1631950.,  1674550.,
      1624550.,  1668750.,  1712950.,  1757150.,  1702350.,  1748150.,
      1793950.,  1839750.,  1780150.,  1827550.,  1874950.,  1922350.,
      1536200.,  1574760.,  1613320.,  1651880.,  1237490.,  1266890.,
      1296290.,  1325690.,  1130810.,  1163090.,  1195370.,  1227650.,
      1620680.,  1664360.,  1708040.,  1751720.,  2169150.,  2224550.,
      2279950.,  2335350.,  2246950.,  2303950.,  2360950.,  2417950.,
      2324750.,  2383350.,  2441950.,  2500550.,  2402550.,  2462750.,
      2522950.,  2583150.,  2054600.,  2103400.,  2152200.,  2201000.,
      1641650.,  1678730.,  1715810.,  1752890.,  1473530.,  1513490.,
      1553450.,  1593410.,  2098120.,  2152040.,  2205960.,  2259880.,
      2791550.,  2859750.,  2927950.,  2996150.,  2869350.,  2939150.,
      3008950.,  3078750.,  2947150.,  3018550.,  3089950.,  3161350.,
      3024950.,  3097950.,  3170950.,  3243950.,  2573000.,  2632040.,
      2691080.,  2750120.,  2045810.,  2090570.,  2135330.,  2180090.,
      1758472.,  1793512.,  1828552.,  1863592.,  2464672.,  2511904.,
      2559136.,  2606368.,  3232600.,  3292280.,  3351960.,  3411640.,
      3307640.,  3368600.,  3429560.,  3490520.,  3382680.,  3444920.,
      3507160.,  3569400.,  3457720.,  3521240.,  3584760.,  3648280.,
      2901920.,  2953248.,  3004576.,  3055904.,  2279272.,  2318152.,
      2357032.,  2395912.,  1784310.,  1812894.,  1841478.,  1870062.,
      2479096.,  2517592.,  2556088.,  2594584.,  3225170.,  3273770.,
      3322370.,  3370970.,  3291050.,  3340610.,  3390170.,  3439730.,
      3356930.,  3407450.,  3457970.,  3508490.,  3422810.,  3474290.,
      3525770.,  3577250.,  2850040.,  2891608.,  2933176.,  2974744.,
      2222142.,  2253606.,  2285070.,  2316534.,  981366.,   1023774.,
      1066182.,  1108590.,  1430008.,  1486936.,  1543864.,  1600792.,
      1940690.,  2012330.,  2083970.,  2155610.,  1968170.,  2040770.,
      2113370.,  2185970.,  1995650.,  2069210.,  2142770.,  2216330.,
      2023130.,  2097650.,  2172170.,  2246690.,  1751800.,  1811800.,
      1871800.,  1931800.,  1414590.,  1459878.,  1505166.,  1550454.,
      1908616.,  1968232.,  2027848.,  2087464.,  2720160.,  2800160.,
      2880160.,  2960160.,  3621080.,  3721720.,  3822360.,  3923000.,
      3670520.,  3772440.,  3874360.,  3976280.,  3719960.,  3823160.,
      3926360.,  4029560.,  3769400.,  3873880.,  3978360.,  4082840.,
      3206560.,  3290656.,  3374752.,  3458848.,  2549224.,  2612680.,
      2676136.,  2739592.,  3187130.,  3265490.,  3343850.,  3422210.,
      4485320.,  4590440.,  4695560.,  4800680.,  5903550.,  6035750.,
      6167950.,  6300150.,  5981350.,  6115150.,  6248950.,  6382750.,
      6059150.,  6194550.,  6329950.,  6465350.,  6136950.,  6273950.,
      6410950.,  6547950.,  5165000.,  5275240.,  5385480.,  5495720.,
      4066610.,  4149770.,  4232930.,  4316090.,  3529850.,  3615890.,
      3701930.,  3787970.,  4962760.,  5078120.,  5193480.,  5308840.,
      6525950.,  6670950.,  6815950.,  6960950.,  6603750.,  6750350.,
      6896950.,  7043550.,  6681550.,  6829750.,  6977950.,  7126150.,
      6759350.,  6909150.,  7058950.,  7208750.,  5683400.,  5803880.,
      5924360.,  6044840.,  4470770.,  4561610.,  4652450.,  4743290.,
      3872570.,  3966290.,  4060010.,  4153730.,  5440200.,  5565800.,
      5691400.,  5817000.,  7148350.,  7306150.,  7463950.,  7621750.,
      7226150.,  7385550.,  7544950.,  7704350.,  7303950.,  7464950.,
      7625950.,  7786950.,  7381750.,  7544350.,  7706950.,  7869550.,
      6201800.,  6332520.,  6463240.,  6593960.,  4874930.,  4973450.,
      5071970.,  5170490.,  4215290.,  4316690.,  4418090.,  4519490.,
      5917640.,  6053480.,  6189320.,  6325160.,  7770750.,  7941350.,
      8111950.,  8282550.,  7848550.,  8020750.,  8192950.,  8365150.,
      7926350.,  8100150.,  8273950.,  8447750.,  8004150.,  8179550.,
      8354950.,  8530350.,  6720200.,  6861160.,  7002120.,  7143080.,
      5279090.,  5385290.,  5491490.,  5597690.,  4443400.,  4527592.,
      4611784.,  4695976.,  6175648.,  6288416.,  6401184.,  6513952.,
      8035160.,  8176760.,  8318360.,  8459960.,  8110200.,  8253080.,
      8395960.,  8538840.,  8185240.,  8329400.,  8473560.,  8617720.,
      8260280.,  8405720.,  8551160.,  8696600.,  6875040.,  6991904.,
      7108768.,  7225632.,  5357416.,  5445448.,  5533480.,  5621512.,
      4166646.,  4232094.,  4297542.,  4362990.,  5753848.,  5841496.,
      5929144.,  6016792.,  7441490.,  7551530.,  7661570.,  7771610.,
      7507370.,  7618370.,  7729370.,  7840370.,  7573250.,  7685210.,
      7797170.,  7909130.,  7639130.,  7752050.,  7864970.,  7977890.,
      6321400.,  6412120.,  6502840.,  6593560.,  4899390.,  4967718.,
      5036046.,  5104374.,  1889142.,  1968414.,  2047686.,  2126958.,
      2738680.,  2844760.,  2950840.,  3056920.,  3699410.,  3832490.,
      3965570.,  4098650.,  3726890.,  3860930.,  3994970.,  4129010.,
      3754370.,  3889370.,  4024370.,  4159370.,  3781850.,  3917810.,
      4053770.,  4189730.,  3257080.,  3366232.,  3475384.,  3584536.,
      2617278.,  2699430.,  2781582.,  2863734.,  3610504.,  3719272.,
      3828040.,  3936808.,  5120416.,  5265952.,  5411488.,  5557024.,
      6785240.,  6967800.,  7150360.,  7332920.,  6834680.,  7018520.,
      7202360.,  7386200.,  6884120.,  7069240.,  7254360.,  7439480.,
      6933560.,  7119960.,  7306360.,  7492760.,  5868960.,  6018592.,
      6168224.,  6317856.,  4644328.,  4756936.,  4869544.,  4982152.,
      5928890.,  6068690.,  6208490.,  6348290.,  8304840.,  8491880.,
      8678920.,  8865960.,  10882750., 11117350., 11351950., 11586550.,
      10960550., 11196750., 11432950., 11669150., 11038350., 11276150.,
      11513950., 11751750., 11116150., 11355550., 11594950., 11834350.,
      9312200.,  9504360.,  9696520.,  9888680.,  7299890.,  7444490.,
      7589090.,  7733690.,  6271610.,  6419090.,  6566570.,  6714050.,
      8782280.,  8979560.,  9176840.,  9374120.,  11505150., 11752550.,
      11999950., 12247350., 11582950., 11831950., 12080950., 12329950.,
      11660750., 11911350., 12161950., 12412550., 11738550., 11990750.,
      12242950., 12495150., 9830600.,  10033000., 10235400., 10437800.,
      7704050.,  7856330.,  8008610.,  8160890.,  6614330.,  6769490.,
      6924650.,  7079810.,  9259720.,  9467240.,  9674760.,  9882280.,
      12127550., 12387750., 12647950., 12908150., 12205350., 12467150.,
      12728950., 12990750., 12283150., 12546550., 12809950., 13073350.,
      12360950., 12625950., 12890950., 13155950., 10349000., 10561640.,
      10774280., 10986920., 8108210.,  8268170.,  8428130.,  8588090.,
      6957050.,  7119890.,  7282730.,  7445570.,  9737160.,  9954920.,
      10172680., 10390440., 12749950., 13022950., 13295950., 13568950.,
      12827750., 13102350., 13376950., 13651550., 12905550., 13181750.,
      13457950., 13734150., 12983350., 13261150., 13538950., 13816750.,
      10867400., 11090280., 11313160., 11536040., 8512370.,  8680010.,
      8847650.,  9015290.,  7128328.,  7261672.,  7395016.,  7528360.,
      9886624.,  10064928., 10243232., 10421536., 12837720., 13061240.,
      13284760., 13508280., 12912760., 13137560., 13362360., 13587160.,
      12987800., 13213880., 13439960., 13666040., 13062840., 13290200.,
      13517560., 13744920., 10848160., 11030560., 11212960., 11395360.,
      8435560.,  8572744.,  8709928.,  8847112.,  6548982.,  6651294.,
      6753606.,  6855918.,  9028600.,  9165400.,  9302200.,  9439000.,
      11657810., 11829290., 12000770., 12172250., 11723690., 11896130.,
      12068570., 12241010., 11789570., 11962970., 12136370., 12309770.,
      11855450., 12029810., 12204170., 12378530., 9792760.,  9932632.,
      10072504., 10212376., 7576638.,  7681830.,  7787022.,  7892214.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow5Stride1, VALID3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,      70.,      110.,     150.,     260.,     404.,     548.,
      692.,     946.,     1258.,    1570.,    1882.,    2344.,    2888.,
      3432.,    3976.,    4520.,    5064.,    5608.,    6152.,    5866.,
      6370.,    6874.,    7378.,    5732.,    6132.,    6532.,    6932.,
      3862.,    4094.,    4326.,    4558.,    1020.,    1356.,    1692.,
      2028.,    4744.,    5544.,    6344.,    7144.,    11684.,   13076.,
      14468.,   15860.,   22352.,   24464.,   26576.,   28688.,   30800.,
      32912.,   35024.,   37136.,   31508.,   33284.,   35060.,   36836.,
      26952.,   28264.,   29576.,   30888.,   16620.,   17340.,   18060.,
      18780.,   8090.,    8978.,    9866.,    10754.,   23692.,   25660.,
      27628.,   29596.,   47574.,   50814.,   54054.,   57294.,   80504.,
      85208.,   89912.,   94616.,   99320.,   104024.,  108728.,  113432.,
      92286.,   96102.,   99918.,   103734.,  73900.,   76636.,   79372.,
      82108.,   43394.,   44858.,   46322.,   47786.,   26360.,   28056.,
      29752.,   31448.,   67344.,   70992.,   74640.,   78288.,   123976.,
      129832.,  135688.,  141544.,  197280.,  205600.,  213920.,  222240.,
      230560.,  238880.,  247200.,  255520.,  203560.,  210184.,  216808.,
      223432.,  156816.,  161488.,  166160.,  170832.,  89304.,   91768.,
      94232.,   96696.,   60280.,   61976.,   63672.,   65368.,   140304.,
      143952.,  147600.,  151248.,  241096.,  246952.,  252808.,  258664.,
      363680.,  372000.,  380320.,  388640.,  396960.,  405280.,  413600.,
      421920.,  336040.,  342664.,  349288.,  355912.,  250256.,  254928.,
      259600.,  264272.,  138584.,  141048.,  143512.,  145976.,  90170.,
      91826.,   93482.,   95138.,   198604.,  202108.,  205612.,  209116.,
      326070.,  331614.,  337158.,  342702.,  473336.,  481112.,  488888.,
      496664.,  504440.,  512216.,  519992.,  527768.,  412254.,  418374.,
      424494.,  430614.,  297964.,  302236.,  306508.,  310780.,  160802.,
      163034.,  165266.,  167498.,  93500.,   94860.,   96220.,   97580.,
      201480.,  204328.,  207176.,  210024.,  324452.,  328916.,  333380.,
      337844.,  462928.,  469136.,  475344.,  481552.,  487760.,  493968.,
      500176.,  506384.,  391892.,  396740.,  401588.,  406436.,  278984.,
      282344.,  285704.,  289064.,  148524.,  150268.,  152012.,  153756.,
      65150.,   65958.,   66766.,   67574.,   138692.,  140372.,  142052.,
      143732.,  220882.,  223498.,  226114.,  228730.,  311976.,  315592.,
      319208.,  322824.,  326440.,  330056.,  333672.,  337288.,  259594.,
      262402.,  265210.,  268018.,  183076.,  185012.,  186948.,  188884.,
      96630.,   97630.,   98630.,   99630.,   670.,     1734.,    2798.,
      3862.,    5636.,    7828.,    10020.,   12212.,   15154.,   18538.,
      21922.,   25306.,   29480.,   34120.,   38760.,   43400.,   48040.,
      52680.,   57320.,   61960.,   44650.,   48226.,   51802.,   55378.,
      35684.,   38132.,   40580.,   43028.,   20886.,   22142.,   23398.,
      24654.,   22780.,   25164.,   27548.,   29932.,   56456.,   61352.,
      66248.,   71144.,   101540.,  109076.,  116612.,  124148.,  158544.,
      168848.,  179152.,  189456.,  199760.,  210064.,  220368.,  230672.,
      170516.,  178436.,  186356.,  194276.,  127816.,  133224.,  138632.,
      144040.,  71148.,   73916.,   76684.,   79452.,   71450.,   75410.,
      79370.,   83330.,   162700.,  170812.,  178924.,  187036.,  274518.,
      286974.,  299430.,  311886.,  407672.,  424664.,  441656.,  458648.,
      475640.,  492632.,  509624.,  526616.,  392958.,  405990.,  419022.,
      432054.,  286636.,  295516.,  304396.,  313276.,  155906.,  160442.,
      164978.,  169514.,  151800.,  157592.,  163384.,  169176.,  334608.,
      346448.,  358288.,  370128.,  549448.,  567592.,  585736.,  603880.,
      797344.,  822048.,  846752.,  871456.,  896160.,  920864.,  945568.,
      970272.,  727336.,  746248.,  765160.,  784072.,  522384.,  535248.,
      548112.,  560976.,  280280.,  286840.,  293400.,  299960.,  267640.,
      273432.,  279224.,  285016.,  571408.,  583248.,  595088.,  606928.,
      912328.,  930472.,  948616.,  966760.,  1291424., 1316128., 1340832.,
      1365536., 1390240., 1414944., 1439648., 1464352., 1105576., 1124488.,
      1143400., 1162312., 779664.,  792528.,  805392.,  818256.,  411480.,
      418040.,  424600.,  431160.,  276410.,  281138.,  285866.,  290594.,
      583372.,  593020.,  602668.,  612316.,  921654.,  936414.,  951174.,
      965934.,  1292024., 1312088., 1332152., 1352216., 1372280., 1392344.,
      1412408., 1432472., 1081566., 1096902., 1112238., 1127574., 756460.,
      766876.,  777292.,  787708.,  396194.,  401498.,  406802.,  412106.,
      238140.,  241548.,  244956.,  248364.,  498952.,  505896.,  512840.,
      519784.,  782948.,  793556.,  804164.,  814772.,  1090640., 1105040.,
      1119440., 1133840., 1148240., 1162640., 1177040., 1191440., 899540.,
      910532.,  921524.,  932516.,  625608.,  633064.,  640520.,  647976.,
      325932.,  329724.,  333516.,  337308.,  147710.,  149542.,  151374.,
      153206.,  307908.,  311636.,  315364.,  319092.,  480850.,  486538.,
      492226.,  497914.,  666792.,  674504.,  682216.,  689928.,  697640.,
      705352.,  713064.,  720776.,  544138.,  550018.,  555898.,  561778.,
      376868.,  380852.,  384836.,  388820.,  195574.,  197598.,  199622.,
      201646.,  1310.,    3398.,    5486.,    7574.,    11012.,   15252.,
      19492.,   23732.,   29362.,   35818.,   42274.,   48730.,   56616.,
      65352.,   74088.,   82824.,   91560.,   100296.,  109032.,  117768.,
      83434.,   90082.,   96730.,   103378.,  65636.,   70132.,   74628.,
      79124.,   37910.,   40190.,   42470.,   44750.,   44540.,   48972.,
      53404.,   57836.,   108168.,  117160.,  126152.,  135144.,  191396.,
      205076.,  218756.,  232436.,  294736.,  313232.,  331728.,  350224.,
      368720.,  387216.,  405712.,  424208.,  309524.,  323588.,  337652.,
      351716.,  228680.,  238184.,  247688.,  257192.,  125676.,  130492.,
      135308.,  140124.,  134810.,  141842.,  148874.,  155906.,  301708.,
      315964.,  330220.,  344476.,  501462.,  523134.,  544806.,  566478.,
      734840.,  764120.,  793400.,  822680.,  851960.,  881240.,  910520.,
      939800.,  693630.,  715878.,  738126.,  760374.,  499372.,  514396.,
      529420.,  544444.,  268418.,  276026.,  283634.,  291242.,  277240.,
      287128.,  297016.,  306904.,  601872.,  621904.,  641936.,  661968.,
      974920.,  1005352., 1035784., 1066216., 1397408., 1438496., 1479584.,
      1520672., 1561760., 1602848., 1643936., 1685024., 1251112., 1282312.,
      1313512., 1344712., 887952.,  909008.,  930064.,  951120.,  471256.,
      481912.,  492568.,  503224.,  475000.,  484888.,  494776.,  504664.,
      1002512., 1022544., 1042576., 1062608., 1583560., 1613992., 1644424.,
      1674856., 2219168., 2260256., 2301344., 2342432., 2383520., 2424608.,
      2465696., 2506784., 1875112., 1906312., 1937512., 1968712., 1309072.,
      1330128., 1351184., 1372240., 684376.,  695032.,  705688.,  716344.,
      462650.,  470450.,  478250.,  486050.,  968140.,  983932.,  999724.,
      1015516., 1517238., 1541214., 1565190., 1589166., 2110712., 2143064.,
      2175416., 2207768., 2240120., 2272472., 2304824., 2337176., 1750878.,
      1775430., 1799982., 1824534., 1214956., 1231516., 1248076., 1264636.,
      631586.,  639962.,  648338.,  656714.,  382780.,  388236.,  393692.,
      399148.,  796424.,  807464.,  818504.,  829544.,  1241444., 1258196.,
      1274948., 1291700., 1718352., 1740944., 1763536., 1786128., 1808720.,
      1831312., 1853904., 1876496., 1407188., 1424324., 1441460., 1458596.,
      972232.,  983784.,  995336.,  1006888., 503340.,  509180.,  515020.,
      520860.,  230270.,  233126.,  235982.,  238838.,  477124.,  482900.,
      488676.,  494452.,  740818.,  749578.,  758338.,  767098.,  1021608.,
      1033416., 1045224., 1057032., 1068840., 1080648., 1092456., 1104264.,
      828682.,  837634.,  846586.,  855538.,  570660.,  576692.,  582724.,
      588756.,  294518.,  297566.,  300614.,  303662.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}